[cfe-commits] r137459 - in /cfe/trunk: lib/Analysis/CFG.cpp test/SemaCXX/cfg.cpp
Ted Kremenek
kremenek at apple.com
Fri Aug 12 07:41:23 PDT 2011
Author: kremenek
Date: Fri Aug 12 09:41:23 2011
New Revision: 137459
URL: http://llvm.org/viewvc/llvm-project?rev=137459&view=rev
Log:
Revert "Fix crash in CFGBuilder involving implicit destructor calls and gotos jumping after an object was declared. Fixes PR 10620."
Removed:
cfe/trunk/test/SemaCXX/cfg.cpp
Modified:
cfe/trunk/lib/Analysis/CFG.cpp
Modified: cfe/trunk/lib/Analysis/CFG.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/CFG.cpp?rev=137459&r1=137458&r2=137459&view=diff
==============================================================================
--- cfe/trunk/lib/Analysis/CFG.cpp (original)
+++ cfe/trunk/lib/Analysis/CFG.cpp Fri Aug 12 09:41:23 2011
@@ -191,8 +191,8 @@
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 @@
/// 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
Removed: cfe/trunk/test/SemaCXX/cfg.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/cfg.cpp?rev=137458&view=auto
==============================================================================
--- cfe/trunk/test/SemaCXX/cfg.cpp (original)
+++ cfe/trunk/test/SemaCXX/cfg.cpp (removed)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wuninitialized -fsyntax-only %s
-
-// Test that the CFG builder handles destructors and gotos jumping between
-// scope boundaries. Previously this crashed (PR 10620).
-struct S_10620 {
- S_10620(const S_10620 &x);
- ~S_10620();
-};
-void PR10620(int x, const S_10620& s) {
- if (x) {
- goto done;
- }
- const S_10620 s2(s);
-done:
- ;
-}
-void PR10620_2(int x, const S_10620& s) {
- if (x)
- goto done;
- const S_10620 s2(s);
-done:
- ;
-}
\ No newline at end of file
More information about the cfe-commits
mailing list