[cfe-commits] r122536 - in /cfe/trunk: lib/Basic/SourceManager.cpp test/Preprocessor/pragma_diagnostic_sections.cpp

Argyrios Kyrtzidis akyrtzi at gmail.com
Thu Dec 23 18:53:53 PST 2010


Author: akirtzidis
Date: Thu Dec 23 20:53:53 2010
New Revision: 122536

URL: http://llvm.org/viewvc/llvm-project?rev=122536&view=rev
Log:
Handle locations coming from macro instantiations properly in SourceManager::isBeforeInTranslationUnit().
Fixes rdar://8790245 and http://llvm.org/PR8821.

Modified:
    cfe/trunk/lib/Basic/SourceManager.cpp
    cfe/trunk/test/Preprocessor/pragma_diagnostic_sections.cpp

Modified: cfe/trunk/lib/Basic/SourceManager.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/SourceManager.cpp?rev=122536&r1=122535&r2=122536&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/SourceManager.cpp (original)
+++ cfe/trunk/lib/Basic/SourceManager.cpp Thu Dec 23 20:53:53 2010
@@ -1198,6 +1198,13 @@
   if (LHS == RHS)
     return false;
 
+  // If both locations are macro instantiations, the order of their offsets
+  // reflect the order that the tokens, pointed to by these locations, were
+  // instantiated (during parsing each token that is instantiated by a macro,
+  // expands the SLocEntries).
+  if (LHS.isMacroID() && RHS.isMacroID())
+    return LHS.getOffset() < RHS.getOffset();
+
   std::pair<FileID, unsigned> LOffs = getDecomposedLoc(LHS);
   std::pair<FileID, unsigned> ROffs = getDecomposedLoc(RHS);
 

Modified: cfe/trunk/test/Preprocessor/pragma_diagnostic_sections.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/pragma_diagnostic_sections.cpp?rev=122536&r1=122535&r2=122536&view=diff
==============================================================================
--- cfe/trunk/test/Preprocessor/pragma_diagnostic_sections.cpp (original)
+++ cfe/trunk/test/Preprocessor/pragma_diagnostic_sections.cpp Thu Dec 23 20:53:53 2010
@@ -68,3 +68,13 @@
 };
 
 //------------------------------------------------------------------------------
+
+// rdar://8790245
+#define MYMACRO \
+    _Pragma("clang diagnostic push") \
+    _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") \
+    _Pragma("clang diagnostic pop")
+MYMACRO
+#undef MYMACRO
+
+//------------------------------------------------------------------------------





More information about the cfe-commits mailing list