Next: GIMPLE Exception Handling, Previous: Jumps, Up: Statements
Destructors for local C++ objects and similar dynamic cleanups are
represented in GIMPLE by a TRY_FINALLY_EXPR
. When the controlled
block exits, the cleanup is run.
TRY_FINALLY_EXPR
complicates the flow graph, since the cleanup
needs to appear on every edge out of the controlled block; this
reduces the freedom to move code across these edges. Therefore, the
EH lowering pass which runs before most of the optimization passes
eliminates these expressions by explicitly adding the cleanup to each
edge.