> Hi Nick,
>
> > Just as a quick recap the problem I encountered is how to deal
> > instructions in a block being used as operands in the unwind
> dest. Such
> > as this:
> >
> > bb1: unwinds to %cleanup
> > call void @foo() ; might throw, might not
> > %x = add i32 %y, %z
> > call void @foo() ; might throw, might not
> > ret void
> > cleanup:
> > call void @use(i32 %x)
> >
> > The problem is that %x might not have been executed before we enter
> > %cleanup.
>
> how about just declaring this illegal? i.e. require the first call
> to be in a different basic block to the second, making it possible
> to use a phi node in %cleanup.
>
> Ciao,
>
> Duncan.
I pretty much support your opinion Duncan. Unwind
BBs should not mess with values defined by their worker
BB. We should not introduce undefined behaviour intentionally.
Gabor
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20080328/bcd60098/attachment.html>