[LLVMdev] RFC: Exception Handling Rewrite

Andrew Trick atrick at apple.com
Fri Aug 5 11:06:21 PDT 2011


On Aug 5, 2011, at 10:57 AM, Peter Lawrence wrote:
> However it seems that if a landingpad-block has multiple predecessors (often the case,
> multiple InvokeInst in the main body of a try-statement all go to the same landingpad-
> block), then you cannot move the LandingpadInst in order to break a critical edge unless
> you do it for _all_  landingpad-block predecessor edges simultaneously, but that seems
> to be a messy conclusion (being forced to split other edges that don't need to be split).
> 
> 
> my first guess is that all the nuances of whether it ever makes sense and/or is even
> logically possible to split a critical landingpad-edge won't be discovered except by
> painful trial-and-error, and that it might be best  to at first disallow it until proven doable
> by someone working in an isolated branch  -- although proving it works may be difficult,
> since so little code actually uses exceptions (only TableGen in llvm ?).

Peter,

I think this will be done lazily to avoid excessive splitting as in:

Call1 -> LP
Call2 -> LP
Call3 -> LP

=> split Call1

Call1 -> LP-split -> LP-remainder
Call2 -> LP-split-merge -> LP-remainder
Call3 -> LP-split-merge -> LP-remainder

But John will know best.

-Andy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110805/d164804f/attachment.html>


More information about the llvm-dev mailing list