Skip to content
  • John McCall's avatar
    Validated by nightly-test runs on x86 and x86-64 darwin, including after · bd30929e
    John McCall authored
    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.
    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.
    
    llvm-svn: 107631
    bd30929e
Loading