diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2011-01-08 06:54:40 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2011-01-08 06:54:40 +0000 |
commit | eeef924c4fcb79a3bcc8782afce343e641bbcb83 (patch) | |
tree | 94d4305e20f84a4daca05751041eeac3f1a72f80 /lib/Analysis | |
parent | 65197b4b0c55bb74af0450230d61ee9461223721 (diff) |
Remove a kludge from analysis based warnings that used to detect
temporaries with no-return destructors. The CFG now properly supports
temporaries and implicit destructors which both makes this kludge no
longer work, and conveniently removes the need for it.
Turn on CFG handling of implicit destructors and initializers. Several
ad-hoc benchmarks don't indicate any measurable performance impact from
growing the CFG, and it fixes real correctness problems with warnings.
As a result of turning on these CFG elements, we started to tickle an
inf-loop in the unreachable code logic used for warnings. The fix is
trivial.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123056 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis')
-rw-r--r-- | lib/Analysis/ReachableCode.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/lib/Analysis/ReachableCode.cpp b/lib/Analysis/ReachableCode.cpp index b9585800c9..802b990143 100644 --- a/lib/Analysis/ReachableCode.cpp +++ b/lib/Analysis/ReachableCode.cpp @@ -30,12 +30,11 @@ static SourceLocation GetUnreachableLoc(const CFGBlock &b, SourceRange &R1, unsigned sn = 0; R1 = R2 = SourceRange(); -top: if (sn < b.size()) { CFGStmt CS = b[sn].getAs<CFGStmt>(); if (!CS) - goto top; - + return SourceLocation(); + S = CS.getStmt(); } else if (b.getTerminator()) S = b.getTerminator(); |