[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