[cfe-commits] r107631 - in /cfe/trunk: lib/CodeGen/ test/CXX/except/except.spec/ test/CodeGenCXX/ test/CodeGenObjC/
John McCall
rjmccall at apple.com
Mon Jul 5 19:53:47 PDT 2010
My commit message got jumbled (on my side). In the correct order this time:
On Jul 5, 2010, at 6:34 PM, John McCall wrote:
> Reimplement how clang generates IR for exceptions. Instead of creating new
> invoke destinations which sequentially chain to the previous destination,
> push a more semantic representation of *why* we need the cleanup/catch/filter
> behavior, then collect that information into a single landing pad upon request.
>
> Also reorganizes how normal cleanups (i.e. cleanups triggered by non-exceptional
> control flow) are generated, since it's actually fairly closely tied in with
> the former. Remove the need to track which cleanup scope a block is associated
> with.
>
> Document a lot of previously poorly-understood (by me, at least) behavior.
>
> The new framework implements the Horrible Hack (tm), which requires every
> landing pad to have a catch-all so that inlining will work. Clang no longer
> requires the Horrible Hack just to make exceptions flow correctly within
> a function, however. The HH is an unfortunate requirement of LLVM's EH IR.
>
> Validated by nightly-test runs on x86 and x86-64 darwin, including after
> self-host. Hopefully these results hold up on different platforms.
>
> I tried to keep the GNU ObjC runtime happy, but it's hard for me to test.
More information about the cfe-commits
mailing list