[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