Skip to content
  1. Mar 27, 2010
    • Bill Wendling's avatar
      If we mark clean-ups as clean-ups, then it could break when inlining through an · d1aa77c3
      Bill Wendling authored
      'invoke' instruction. You will get a situation like this:
      
      bb:
        %ehptr = eh.exception()
        %sel = eh.selector(%ehptr, @per, 0);
      
      ...
      
      bb2:
        invoke _Unwind_Resume_or_Rethrow(%ehptr) %normal unwind to %lpad
      
      lpad:
        ...
      
      The unwinder will see the %sel call as a clean-up and, if it doesn't have a
      catch further up the call stack, it will skip running it. But there *is* another
      catch up the stack -- the catch for the %lpad. However, we can't see that. This
      is fixed in code-gen, where we detect this situation, and convert the "clean-up"
      selector call into a "catch-all" selector call. This gives us the correct
      semantics.
      
      llvm-svn: 99671
      d1aa77c3
  2. Mar 26, 2010
  3. Mar 25, 2010
Loading