[LLVMdev] unwinds to in the CFG

Gordon Henriksen
Fri, 28 Mar 2008 16:26:16 -0000

Hi Nick,

On Mar 28, 2008, at 02:15, Nick Lewycky wrote:

> Before I start investing time implementing these changes, does
> anyone foresee any problems that I missed?

Stepping back from the nuts and bolts for a moment, could you
precisely define what constitutes a predecessor in this model?

What blocks would a phi node in %catch require for a case like this?

define i8 @f(i1 %b) {
entry:
   b label %try
try: unwinds to %catch
   b i1 %b, label %then, label %else
then: unwinds to %catch
   ret void
else: unwinds to %catch
   ret void
catch:  ; What are my predecessors?
   ret void
}

> B. redefine the dominator tree by modifying the GraphTraits
>  i.  A dom B means that all instructions in A are guaranteed to
> execute before any instructions in B.
>  ii. the domtree may have multiple roots.
>
> Multiple roots occurs when the entry block 'unwinds to' another
block.

It seems highly problematical that static allocas might not dominate
their uses. The entry block is already special in that it cannot be
used as a branch target. Why not also forbid 'unwinds to' on the entry
block?

— Gordon

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