Fix handling of lifetime extended temporaries by using the
MaterializeTemporaryExpr as indication of whether a temporary was actually
extended. As lifetime extended temporaries do not necessarily have VarDecls,
changes the type of the destructors for those to reuse CFGTemopraryDtor.
Open problems:
- temporary dtors are not yet inlined, but some tests rely on dtor inlining for lifetime extended temporaries
- there are still missing cases for when we do not want to continue digging through the AST for the CXXBindTemporaryExpr after hitting a MaterializeTemporaryExpr; we now have 3 different places in the code that encodes this information; some refactoring is needed to clean that up
- more tests needed
This is still rough, but I wanted to get early feedback about the direction this
is taking.
This signature's a bit weird to me: this method is called for lifetime extended temporaries, but LifetimeExtended can be false: what does that mean?
Does this method or its arguments need to be renamed?