[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