[PATCH] PR14795 : -frewrite-includes sometimes results in incorrect line number
Lubos Lunak
l.lunak at suse.cz
Sun Jul 14 14:16:38 PDT 2013
On Monday 01 of July 2013, Eli Friedman wrote:
> On Sat, Jun 29, 2013 at 11:35 PM, Lubos Lunak <l.lunak at suse.cz> wrote:
> > Hello,
> >
> > could somebody please review and commit the atached patch for pr14795?
> > Thank
> > you.
>
> --- a/lib/Lex/Lexer.cpp
> +++ b/lib/Lex/Lexer.cpp
> @@ -2372,8 +2372,9 @@ bool Lexer::LexEndOfFile(Token &Result, const char
> *CurPtr) {
> FormTokenWithChars(Result, CurPtr, tok::eod);
>
> // Restore comment saving mode, in case it was disabled for directive.
> - resetExtendedTokenMode();
> - return true; // Have a token.
> + if (PP)
> + resetExtendedTokenMode();
> + return true; // Have a token.
> }
>
> // If we are in raw mode, return this event as an EOF token. Let the
> caller
>
> How is this related?
I had a crash there without this when I wrote the patch. I don't remember the
circumstances though and the random testcase I tried doesn't trigger it.
> + // We surround every #include by #if 0 to comment it out, but
> that
> + // changes line numbers. These are fixed up right after that,
> but
> + // the whole #include could be inside a preprocessor
> conditional
> + // that is not processed. So it is necessary to fix the line
>
> This looks like it puts a line directive after every if/elif/else/endif.
> That not really a problem, I guess, but it would be nice to avoid if
> possible.
Maybe there can be a way to compute which ones need it (every change from
ignored to non-ignored block), but that seems like way too much effort for a
couple of lines.
> Otherwise, looks fine.
--
Lubos Lunak
l.lunak at suse.cz
More information about the cfe-commits
mailing list