[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