2010/11/14 Marcin Świderski <[email protected]> > W dniu 13 listopada 2010 12:37 użytkownik Zhongxing Xu < > [email protected]> napisał: > > I see some unbalancing before this patch. (See the test case that was >> modified.) Could you provide an example that is unbalanced by this patch? >> >> 2010/11/13 Marcin Świderski <[email protected]> >> >> Hi Zhongxing >>> >>> Won't it lead to unbalancing ctors/dtors like I've written in discusion >>> after commit r118159? >>> >>> >>> When I wrote about unbalancing I meant that removing elidable > CXXConstructExpr and then removing destructors for temporaries that where > created with those expressions will unbalance ctors/dtors calls. Because not > every call to the ctor is a block level statement this is not visualised in > the CFG. > > Example of this is simple: > > class A { > public: > A() {} > ~A() {} > }; > > A foo() { return A(); } > > AST for function foo() looks like this: > > A foo() (CompoundStmt 0x105048b98 <main.cpp:7:9, col:23> > (ReturnStmt 0x105048b70 <col:11, col:20> > (CXXExprWithTemporaries 0x105048b38 <col:18, col:20> 'class A' > (CXXTemporary 0x105048a80) > (CXXConstructExpr 0x105048af0 <col:18, col:20> 'class A''void (const > class A &) throw()' elidable > (ImplicitCastExpr 0x105048ad0 <col:18, col:20> 'const class A' > <NoOp> > (CXXBindTemporaryExpr 0x105048a88 <col:18, col:20> 'class A' > (CXXTemporary 0x105048a80) > (CXXTemporaryObjectExpr 0x105048a38 <col:18, col:20> 'class > A''void (void)'))))))) > > If we want to ensure that the CFG is constructed from AST with all > elidable constructors elided, for above example we would have to ignore > both CXXConstructExpr and CXXBindTemporaryExpr. In your implementation only > the first will be elided. >
Hi Marcin, I still do not understand your point. The current implementation works well for the above example. One block-level expr for CXXTemporaryObjectExpr. One temporary dtor for CXXBindTemporaryExpr.
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
