diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-08-17 00:31:18 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-08-17 00:31:18 +0000 |
commit | 37e59a10a7a537428e5997fd5896f5b89fd34e6b (patch) | |
tree | 458c03e85308a48d74f07bd8525f6dbad3cc3926 /lib/Basic/SourceManager.cpp | |
parent | d21683cdc0ff4217bfd98a9d8d0c1083b642caac (diff) |
Make SourceManager::isBeforeInTranslationUnit handle macro locations correctly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137793 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Basic/SourceManager.cpp')
-rw-r--r-- | lib/Basic/SourceManager.cpp | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/lib/Basic/SourceManager.cpp b/lib/Basic/SourceManager.cpp index 4f2922b645..e3106c4a29 100644 --- a/lib/Basic/SourceManager.cpp +++ b/lib/Basic/SourceManager.cpp @@ -1484,11 +1484,6 @@ bool SourceManager::isBeforeInTranslationUnit(SourceLocation LHS, if (LHS == RHS) return false; - // If both locations are macro expansions, the order of their offsets reflect - // the order that the tokens, pointed to by these locations, were expanded - // (during parsing each token that is expanded by a macro, expands the - // SLocEntries). - std::pair<FileID, unsigned> LOffs = getDecomposedLoc(LHS); std::pair<FileID, unsigned> ROffs = getDecomposedLoc(RHS); @@ -1502,7 +1497,8 @@ bool SourceManager::isBeforeInTranslationUnit(SourceLocation LHS, return IsBeforeInTUCache.getCachedResult(LOffs.second, ROffs.second); // Okay, we missed in the cache, start updating the cache for this query. - IsBeforeInTUCache.setQueryFIDs(LOffs.first, ROffs.first); + IsBeforeInTUCache.setQueryFIDs(LOffs.first, ROffs.first, + /*isLFIDBeforeRFID=*/LOffs.first.ID < ROffs.first.ID); // We need to find the common ancestor. The only way of doing this is to // build the complete include chain for one and then walking up the chain @@ -1534,7 +1530,7 @@ bool SourceManager::isBeforeInTranslationUnit(SourceLocation LHS, // This can happen if a location is in a built-ins buffer. // But see PR5662. // Clear the lookup cache, it depends on a common location. - IsBeforeInTUCache.setQueryFIDs(FileID(), FileID()); + IsBeforeInTUCache.clear(); bool LIsBuiltins = strcmp("<built-in>", getBuffer(LOffs.first)->getBufferIdentifier()) == 0; bool RIsBuiltins = strcmp("<built-in>", |