forked from OSchip/llvm-project
Workaround a really serious caching bug in SourceManager::isBeforeInTranslationUnit() where the
method will sometimes return different results for the same input SourceLocations. I haven't unraveled this method completely yet, so this truly is a workaround until a better fix comes along. llvm-svn: 103143
This commit is contained in:
parent
f3983652eb
commit
5b0773e201
|
@ -1170,15 +1170,20 @@ bool SourceManager::isBeforeInTranslationUnit(SourceLocation LHS,
|
|||
if (LOffs.first == ROffs.first)
|
||||
return LOffs.second < ROffs.second;
|
||||
|
||||
#if 0
|
||||
// If we are comparing a source location with multiple locations in the same
|
||||
// file, we get a big win by caching the result.
|
||||
|
||||
// FIXME: This caching is wrong, but I don't know enough about this code
|
||||
// to immediately fix it. There are cases where passing the same input
|
||||
// values to this method causes it to return different results.
|
||||
if (LastLFIDForBeforeTUCheck == LOffs.first &&
|
||||
LastRFIDForBeforeTUCheck == ROffs.first)
|
||||
return LastResForBeforeTUCheck;
|
||||
|
||||
LastLFIDForBeforeTUCheck = LOffs.first;
|
||||
LastRFIDForBeforeTUCheck = ROffs.first;
|
||||
#endif
|
||||
|
||||
// "Traverse" the include/instantiation stacks of both locations and try to
|
||||
// find a common "ancestor".
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
#include "annotate-tokens-include.h"
|
||||
|
||||
// RUN: c-index-test -test-annotate-tokens=%s:1:1:2:1 %s | FileCheck %s
|
||||
// CHECK: Identifier: "include" [1:2 - 1:9] preprocessing directive=
|
||||
// CHECK: Literal: ""annotate-tokens-include.h"" [1:10 - 1:37] preprocessing directive=
|
||||
|
|
@ -0,0 +1 @@
|
|||
int foo();
|
Loading…
Reference in New Issue