forked from OSchip/llvm-project
[analyzer] Remove memoization from RunLoopAutoreleaseLeakChecker
Memoization dose not seem to be necessary, as other statement visitors run just fine without it, and in fact seems to be causing memory corruptions. Just removing it instead of investigating the root cause. rdar://45945002 Differential Revision: https://reviews.llvm.org/D54921 llvm-svn: 348822
This commit is contained in:
parent
d1081ec508
commit
e8240f4df0
|
@ -58,13 +58,12 @@ public:
|
|||
|
||||
} // end anonymous namespace
|
||||
|
||||
|
||||
using TriBoolTy = Optional<bool>;
|
||||
using MemoizationMapTy = llvm::DenseMap<const Stmt *, Optional<TriBoolTy>>;
|
||||
|
||||
static TriBoolTy
|
||||
seenBeforeRec(const Stmt *Parent, const Stmt *A, const Stmt *B,
|
||||
MemoizationMapTy &Memoization) {
|
||||
/// \return Whether {@code A} occurs before {@code B} in traversal of
|
||||
/// {@code Parent}.
|
||||
/// Conceptually a very incomplete/unsound approximation of happens-before
|
||||
/// relationship (A is likely to be evaluated before B),
|
||||
/// but useful enough in this case.
|
||||
static bool seenBefore(const Stmt *Parent, const Stmt *A, const Stmt *B) {
|
||||
for (const Stmt *C : Parent->children()) {
|
||||
if (!C) continue;
|
||||
|
||||
|
@ -74,26 +73,9 @@ seenBeforeRec(const Stmt *Parent, const Stmt *A, const Stmt *B,
|
|||
if (C == B)
|
||||
return false;
|
||||
|
||||
Optional<TriBoolTy> &Cached = Memoization[C];
|
||||
if (!Cached)
|
||||
Cached = seenBeforeRec(C, A, B, Memoization);
|
||||
|
||||
if (Cached->hasValue())
|
||||
return Cached->getValue();
|
||||
return seenBefore(C, A, B);
|
||||
}
|
||||
|
||||
return None;
|
||||
}
|
||||
|
||||
/// \return Whether {@code A} occurs before {@code B} in traversal of
|
||||
/// {@code Parent}.
|
||||
/// Conceptually a very incomplete/unsound approximation of happens-before
|
||||
/// relationship (A is likely to be evaluated before B),
|
||||
/// but useful enough in this case.
|
||||
static bool seenBefore(const Stmt *Parent, const Stmt *A, const Stmt *B) {
|
||||
MemoizationMapTy Memoization;
|
||||
TriBoolTy Val = seenBeforeRec(Parent, A, B, Memoization);
|
||||
return Val.getValue();
|
||||
return false;
|
||||
}
|
||||
|
||||
static void emitDiagnostics(BoundNodes &Match,
|
||||
|
|
Loading…
Reference in New Issue