From: Ted Kremenek Date: Sat, 5 Nov 2011 00:10:15 +0000 (+0000) Subject: Per discussion with John McCall, don't add OpaqueValueExprs to the CFG. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6a9065a39ab15383082b914af28759da1652db18;p=clang Per discussion with John McCall, don't add OpaqueValueExprs to the CFG. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143766 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/CFG.cpp b/lib/Analysis/CFG.cpp index 4095fe925e..48888f672e 100644 --- a/lib/Analysis/CFG.cpp +++ b/lib/Analysis/CFG.cpp @@ -960,6 +960,9 @@ CFGBlock *CFGBuilder::Visit(Stmt * S, AddStmtChoice asc) { case Stmt::MemberExprClass: return VisitMemberExpr(cast(S), asc); + case Stmt::NullStmtClass: + return Block; + case Stmt::ObjCAtCatchStmtClass: return VisitObjCAtCatchStmt(cast(S)); @@ -975,7 +978,7 @@ CFGBlock *CFGBuilder::Visit(Stmt * S, AddStmtChoice asc) { case Stmt::ObjCForCollectionStmtClass: return VisitObjCForCollectionStmt(cast(S)); - case Stmt::NullStmtClass: + case Stmt::OpaqueValueExprClass: return Block; case Stmt::ReturnStmtClass: diff --git a/test/Analysis/temp-obj-dtors-cfg-output.cpp b/test/Analysis/temp-obj-dtors-cfg-output.cpp index 17864e4c54..f00227a260 100644 --- a/test/Analysis/temp-obj-dtors-cfg-output.cpp +++ b/test/Analysis/temp-obj-dtors-cfg-output.cpp @@ -505,15 +505,14 @@ TestCtorInits::TestCtorInits() // CHECK: 2: [B4.1] // CHECK: 3: [B4.2] // CHECK: 4: A a = A() ?: A(); -// CHECK: T: [B7.5] ? ... : ... +// CHECK: T: [B7.4] ? ... : ... // CHECK: Predecessors (2): B5 B6 // CHECK: Successors (2): B2 B3 // CHECK: [ B5 ] -// CHECK: 1: [B7.3] -// CHECK: 2: [B7.3] +// CHECK: 1: +// CHECK: 2: [B5.1] // CHECK: 3: [B5.2] -// CHECK: 4: [B5.3] -// CHECK: 5: [B5.4] (BindTemporary) +// CHECK: 4: [B5.3] (BindTemporary) // CHECK: Predecessors (1): B7 // CHECK: Successors (1): B4 // CHECK: [ B6 ] @@ -527,10 +526,9 @@ TestCtorInits::TestCtorInits() // CHECK: [ B7 ] // CHECK: 1: A() // CHECK: 2: [B7.1] (BindTemporary) -// CHECK: 3: -// CHECK: 4: [B7.3].operator _Bool -// CHECK: 5: [B7.4]() -// CHECK: T: [B7.5] ? ... : ... +// CHECK: 3: .operator _Bool +// CHECK: 4: [B7.3]() +// CHECK: T: [B7.4] ? ... : ... // CHECK: Predecessors (1): B8 // CHECK: Successors (2): B5 B6 // CHECK: [ B0 (EXIT) ] @@ -561,15 +559,14 @@ TestCtorInits::TestCtorInits() // CHECK: 4: foo // CHECK: 5: [B4.4] // CHECK: 6: [B4.5]([B4.3]) -// CHECK: T: [B7.6] ? ... : ... +// CHECK: T: [B7.5] ? ... : ... // CHECK: Predecessors (2): B5 B6 // CHECK: Successors (2): B2 B3 // CHECK: [ B5 ] -// CHECK: 1: [B7.4] -// CHECK: 2: [B7.4] +// CHECK: 1: +// CHECK: 2: [B5.1] // CHECK: 3: [B5.2] -// CHECK: 4: [B5.3] -// CHECK: 5: [B5.4] (BindTemporary) +// CHECK: 4: [B5.3] (BindTemporary) // CHECK: Predecessors (1): B7 // CHECK: Successors (1): B4 // CHECK: [ B6 ] @@ -584,10 +581,9 @@ TestCtorInits::TestCtorInits() // CHECK: 1: ~A() (Temporary object destructor) // CHECK: 2: A() // CHECK: 3: [B7.2] (BindTemporary) -// CHECK: 4: -// CHECK: 5: [B7.4].operator _Bool -// CHECK: 6: [B7.5]() -// CHECK: T: [B7.6] ? ... : ... +// CHECK: 4: .operator _Bool +// CHECK: 5: [B7.4]() +// CHECK: T: [B7.5] ? ... : ... // CHECK: Predecessors (2): B9 B8 // CHECK: Successors (2): B5 B6 // CHECK: [ B8 ] @@ -599,15 +595,14 @@ TestCtorInits::TestCtorInits() // CHECK: 2: [B9.1] // CHECK: 3: [B9.2] // CHECK: 4: const A &a = A() ?: A(); -// CHECK: T: [B12.5] ? ... : ... +// CHECK: T: [B12.4] ? ... : ... // CHECK: Predecessors (2): B10 B11 // CHECK: Successors (2): B7 B8 // CHECK: [ B10 ] -// CHECK: 1: [B12.3] -// CHECK: 2: [B12.3] +// CHECK: 1: +// CHECK: 2: [B10.1] // CHECK: 3: [B10.2] -// CHECK: 4: [B10.3] -// CHECK: 5: [B10.4] (BindTemporary) +// CHECK: 4: [B10.3] (BindTemporary) // CHECK: Predecessors (1): B12 // CHECK: Successors (1): B9 // CHECK: [ B11 ] @@ -621,10 +616,9 @@ TestCtorInits::TestCtorInits() // CHECK: [ B12 ] // CHECK: 1: A() // CHECK: 2: [B12.1] (BindTemporary) -// CHECK: 3: -// CHECK: 4: [B12.3].operator _Bool -// CHECK: 5: [B12.4]() -// CHECK: T: [B12.5] ? ... : ... +// CHECK: 3: .operator _Bool +// CHECK: 4: [B12.3]() +// CHECK: T: [B12.4] ? ... : ... // CHECK: Predecessors (1): B13 // CHECK: Successors (2): B10 B11 // CHECK: [ B0 (EXIT) ] @@ -764,3 +758,4 @@ TestCtorInits::TestCtorInits() // CHECK: Predecessors (1): B1 // CHECK: Successors (0): +