From: Chris Lattner Date: Sat, 12 Jun 2010 16:20:56 +0000 (+0000) Subject: fix PR7360: -P mode turns off line markers, but not blank space. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6133aeb97da5cab2d75c5f2c2f2561ea1b8fd0ff;p=clang fix PR7360: -P mode turns off line markers, but not blank space. Apparently some programs which abuse the preprocessor depend on this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105889 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Frontend/PrintPreprocessedOutput.cpp b/lib/Frontend/PrintPreprocessedOutput.cpp index e89c425f47..80e697daa0 100644 --- a/lib/Frontend/PrintPreprocessedOutput.cpp +++ b/lib/Frontend/PrintPreprocessedOutput.cpp @@ -174,20 +174,6 @@ void PrintPPOutputPPCallbacks::WriteLineInfo(unsigned LineNo, /// #line directive. This returns false if already at the specified line, true /// if some newlines were emitted. bool PrintPPOutputPPCallbacks::MoveToLine(unsigned LineNo) { - if (DisableLineMarkers) { - if (LineNo == CurLine) return false; - - CurLine = LineNo; - - if (!EmittedTokensOnThisLine && !EmittedMacroOnThisLine) - return true; - - OS << '\n'; - EmittedTokensOnThisLine = false; - EmittedMacroOnThisLine = false; - return true; - } - // If this line is "close enough" to the original line, just print newlines, // otherwise print a #line directive. if (LineNo-CurLine <= 8) { @@ -199,8 +185,17 @@ bool PrintPPOutputPPCallbacks::MoveToLine(unsigned LineNo) { const char *NewLines = "\n\n\n\n\n\n\n\n"; OS.write(NewLines, LineNo-CurLine); } - } else { + } else if (!DisableLineMarkers) { + // Emit a #line or line marker. WriteLineInfo(LineNo, 0, 0); + } else { + // Okay, we're in -P mode, which turns off line markers. However, we still + // need to emit a newline between tokens on different lines. + if (EmittedTokensOnThisLine || EmittedMacroOnThisLine) { + OS << '\n'; + EmittedTokensOnThisLine = false; + EmittedMacroOnThisLine = false; + } } CurLine = LineNo; diff --git a/test/Preprocessor/print_line_track.c b/test/Preprocessor/print_line_track.c index c87fe00f40..fb2ccf270e 100644 --- a/test/Preprocessor/print_line_track.c +++ b/test/Preprocessor/print_line_track.c @@ -3,8 +3,8 @@ * RUN: %clang_cc1 -E -P %s | grep 'a 3' * RUN: %clang_cc1 -E -P %s | grep 'b 16' * RUN: %clang_cc1 -E %s | not grep '# 0 ' - * PR1848 - * PR3437 + * RUN: %clang_cc1 -E -P %s | count 4 + * PR1848 PR3437 PR7360 */ #define t(x) x