[cfe-commits] r59574 - in /cfe/trunk: include/clang/Lex/Preprocessor.h lib/Lex/PPDirectives.cpp lib/Lex/PPLexerChange.cpp
Fariborz Jahanian
fjahanian at apple.com
Tue Nov 18 17:05:24 PST 2008
I did an update and build clang. Now tests hang.
- Fariborz
On Nov 18, 2008, at 4:46 PM, Ted Kremenek wrote:
> Author: kremenek
> Date: Tue Nov 18 18:46:18 2008
> New Revision: 59574
>
> URL: http://llvm.org/viewvc/llvm-project?rev=59574&view=rev
> Log:
> - Move static function IsNonPragmaNonMacroLexer into Preprocessor.h.
> - Add variants of IsNonPragmaNonMacroLexer to accept an
> IncludeMacroStack entry
> (simplifies some uses).
> - Use IsNonPragmaNonMacroLexer in Preprocessor::LookupFile.
>
> Performance testing of -Eonly on Cocoa.h shows no performance
> regression because
> of this patch.
>
> Modified:
> cfe/trunk/include/clang/Lex/Preprocessor.h
> cfe/trunk/lib/Lex/PPDirectives.cpp
> cfe/trunk/lib/Lex/PPLexerChange.cpp
>
> Modified: cfe/trunk/include/clang/Lex/Preprocessor.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/Preprocessor.h?rev=59574&r1=59573&r2=59574&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cfe/trunk/include/clang/Lex/Preprocessor.h (original)
> +++ cfe/trunk/include/clang/Lex/Preprocessor.h Tue Nov 18 18:46:18
> 2008
> @@ -598,6 +598,23 @@
> bool isAngled, const DirectoryLookup
> *FromDir,
> const DirectoryLookup *&CurDir);
>
> +
> + static bool IsNonPragmaNonMacroLexer(const Lexer* L,
> + const PreprocessorLexer* P) {
> + if (L)
> + return !L->isPragmaLexer();
> + else
> + return P != 0;
> + }
> +
> + static bool IsNonPragmaNonMacroLexer(const IncludeStackInfo& I) {
> + return IsNonPragmaNonMacroLexer(I.TheLexer, I.ThePPLexer);
> + }
> +
> + bool IsNonPragmaNonMacroLexer() const {
> + return IsNonPragmaNonMacroLexer(CurLexer.get(), CurPPLexer);
> + }
> +
> //
> =
> =
> =--------------------------------------------------------------------
> ===//
> // Caching stuff.
> void CachingLex(Token &Result);
>
> Modified: cfe/trunk/lib/Lex/PPDirectives.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PPDirectives.cpp?rev=59574&r1=59573&r2=59574&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cfe/trunk/lib/Lex/PPDirectives.cpp (original)
> +++ cfe/trunk/lib/Lex/PPDirectives.cpp Tue Nov 18 18:46:18 2008
> @@ -317,7 +317,7 @@
> // Otherwise, see if this is a subframework header. If so, this
> is relative
> // to one of the headers on the #include stack. Walk the list of
> the current
> // headers on the #include stack and pass them to HeaderInfo.
> - if (CurLexer && !CurLexer->Is_PragmaLexer) {
> + if (IsNonPragmaNonMacroLexer()) {
> if ((CurFileEnt = SourceMgr.getFileEntryForLoc(CurLexer-
> >getFileLoc())))
> if ((FE = HeaderInfo.LookupSubframeworkHeader(FilenameStart,
> FilenameEnd,
> CurFileEnt)))
> @@ -326,7 +326,7 @@
>
> for (unsigned i = 0, e = IncludeMacroStack.size(); i != e; ++i) {
> IncludeStackInfo &ISEntry = IncludeMacroStack[e-i-1];
> - if (ISEntry.TheLexer && !ISEntry.TheLexer->Is_PragmaLexer) {
> + if (IsNonPragmaNonMacroLexer(ISEntry)) {
> if ((CurFileEnt =
> SourceMgr.getFileEntryForLoc(ISEntry.TheLexer-
> >getFileLoc())))
> if ((FE = HeaderInfo.LookupSubframeworkHeader(FilenameStart,
>
> Modified: cfe/trunk/lib/Lex/PPLexerChange.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PPLexerChange.cpp?rev=59574&r1=59573&r2=59574&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cfe/trunk/lib/Lex/PPLexerChange.cpp (original)
> +++ cfe/trunk/lib/Lex/PPLexerChange.cpp Tue Nov 18 18:46:18 2008
> @@ -25,28 +25,19 @@
> // Miscellaneous Methods.
> //
> =
> =
> =
> ----------------------------------------------------------------------=
> ==//
>
> -static inline bool IsNonPragmaNonMacroLexer(const Lexer* L,
> - const
> PreprocessorLexer* P) {
> - if (L)
> - return !L->isPragmaLexer();
> - else
> - return P != 0;
> -}
> -
> /// isInPrimaryFile - Return true if we're in the top-level file,
> not in a
> /// #include. This looks through macro expansions and active
> _Pragma lexers.
> bool Preprocessor::isInPrimaryFile() const {
> - if (IsNonPragmaNonMacroLexer(CurLexer.get(), CurPPLexer))
> + if (IsNonPragmaNonMacroLexer())
> return IncludeMacroStack.empty();
>
> // If there are any stacked lexers, we're in a #include.
> - assert(IsNonPragmaNonMacroLexer(IncludeMacroStack[0].TheLexer,
> - IncludeMacroStack[0].ThePPLexer) &&
> + assert(IsNonPragmaNonMacroLexer(IncludeMacroStack[0]) &&
> "Top level include stack isn't our primary lexer?");
> for (unsigned i = 1, e = IncludeMacroStack.size(); i != e; ++i)
> - if (IsNonPragmaNonMacroLexer(IncludeMacroStack[i].TheLexer,
> - IncludeMacroStack[i].ThePPLexer))
> + if (IsNonPragmaNonMacroLexer(IncludeMacroStack[i]))
> return false;
> +
> return true;
> }
>
> @@ -91,7 +82,7 @@
> const DirectoryLookup
> *CurDir) {
>
> // Add the current lexer to the include stack.
> - if (CurLexer || CurTokenLexer)
> + if (CurPPLexer || CurTokenLexer)
> PushIncludeMacroStack();
>
> CurLexer.reset(TheLexer);
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list