[cfe-dev] Extra join points in CFG?
John McCall
rjmccall at apple.com
Wed Dec 21 15:42:43 PST 2011
On Dec 21, 2011, at 2:51 PM, Ted Kremenek wrote:
> Brief update: I have looked at this, and it turns out to be a bit more complicated then I anticipated. I discovered through investigation that the way we currently model '&&' and '||' in the CFG does not properly model C++ destructors at all, and fixing that may require changing some fairly pervasive invariants. I think we need to do this, but it will take a bit longer than I originally anticipated…
Incidentally, this kind of conditional evaluation comes up in four places
in the language:
- the ternary operator ?:, in both its variants,
- the binary operator &&,
- the binary operator ||, and
- 'new' expressions that call a operator new declared throw()/noexcept,
where the initializer is not evaluated if the result of the call is null.
Grepping CodeGen for ConditionalEvaluation is a good way to find
these places, albeit with some redundancy between the different
code generation patterns.
John.
More information about the cfe-dev
mailing list