[LLVMdev] RFC: Exception Handling Rewrite
atrick at apple.com
Fri Aug 5 13:06:21 CDT 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 ?).
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.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the LLVMdev