aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/CFG.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2011-08-12 14:41:23 +0000
committerTed Kremenek <kremenek@apple.com>2011-08-12 14:41:23 +0000
commit5290c80eba2c96aee32912adf77bea6eddb92026 (patch)
treecf9d101304c1043dc5b72fd348c44d4385d38fc5 /lib/Analysis/CFG.cpp
parent772eeaefef2c883aabe35caf4543e7e32d290183 (diff)
Revert "Fix crash in CFGBuilder involving implicit destructor calls and gotos jumping after an object was declared. Fixes PR 10620."
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137459 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/CFG.cpp')
-rw-r--r--lib/Analysis/CFG.cpp14
1 files changed, 6 insertions, 8 deletions
diff --git a/lib/Analysis/CFG.cpp b/lib/Analysis/CFG.cpp
index ea126a9689..1edb328d01 100644
--- a/lib/Analysis/CFG.cpp
+++ b/lib/Analysis/CFG.cpp
@@ -191,8 +191,8 @@ int LocalScope::const_iterator::distance(LocalScope::const_iterator L) {
int D = 0;
const_iterator F = *this;
while (F.Scope != L.Scope) {
- if (F == const_iterator())
- return D;
+ assert (F != const_iterator()
+ && "L iterator is not reachable from F iterator.");
D += F.VarIter;
F = F.Scope->Prev;
}
@@ -816,12 +816,10 @@ void CFGBuilder::addLocalScopeAndDtors(Stmt* S) {
/// performed in place specified with iterator.
void CFGBuilder::insertAutomaticObjDtors(CFGBlock* Blk, CFGBlock::iterator I,
LocalScope::const_iterator B, LocalScope::const_iterator E, Stmt* S) {
- if (int Cnt = B.distance(E)) {
- BumpVectorContext& C = cfg->getBumpVectorContext();
- I = Blk->beginAutomaticObjDtorsInsert(I, Cnt, C);
- while (B != E)
- I = Blk->insertAutomaticObjDtor(I, *B++, S);
- }
+ BumpVectorContext& C = cfg->getBumpVectorContext();
+ I = Blk->beginAutomaticObjDtorsInsert(I, B.distance(E), C);
+ while (B != E)
+ I = Blk->insertAutomaticObjDtor(I, *B++, S);
}
/// appendAutomaticObjDtors - Append destructor CFGElements for variables with