[LLVMdev] RFC: Exception Handling Rewrite
Cameron Zwarich
zwarich at apple.com
Fri Jul 22 23:52:32 PDT 2011
On Jul 22, 2011, at 11:44 PM, Jakob Stoklund Olesen wrote:
> On Jul 22, 2011, at 10:29 PM, Bill Wendling wrote:
>
>> // Restrictions:
>>
>> There are several new invariants which will be enforced by the verifier:
>>
>> 1. A landing pad block is a basic block which is the unwind destination of an
>> invoke instruction.
>> 2. A landing pad block must have a landingpad instruction as its first non-PHI
>> instruction.
>> 3. The landingpad instruction must be the first non-PHI instruction in the
>> landing pad block.
>> 4. Like indirect branches, splitting the critical edge to a landing pad block
>> requires considerable care, and SplitCriticalEdge will refuse to do it.
>> 5. All landingpad instructions in a function must have the same personality
>> function.
>
> Could we add:
>
> - A landing pad block is not the destination of any other kind of terminator. Only unwind edges are allowed.
How do we lower SjLj exceptions as an IR -> IR pass then?
> - The landingpad instruction must only appear at the top of a landing pad. It cannot appear in any other block, or following non-phi instructions.
How does this differ from 2&3 above?
Cameron
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110722/b74adfc4/attachment.html>
More information about the llvm-dev
mailing list