Are you suggesting having different semantics for different chunks of the IR graph?<div><br></div><div>--</div><div>Eric<br><br><div class="gmail_quote">On Thu, Nov 25, 2010 at 2:33 AM, Renato Golin <span dir="ltr"><<a href="mailto:rengolin@systemcall.org">rengolin@systemcall.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">On 25 November 2010 07:51, Duncan Sands <<a href="mailto:baldrick@free.fr">baldrick@free.fr</a>> wrote:<br>

> If you got to XYZ because an instruction threw an exception before %x was<br>
> defined, then in XYZ you are using %x which was never defined.  In effect<br>
> the definition of %x in bb does not dominate the use in XYZ.  I think the<br>
> solution is to say that in XYZ you are not allowed to use any values defined<br>
> in bb: in the dominator tree, bb is not considered to dominate XYZ.<br>
<br>
</div>Hi Duncan,<br>
<br>
I don't see how you can have dominance between a normal block and a<br>
cleanup block. Clean-up landing pads should never use user code (since<br>
they don't exist in userland).<br>
<br>
Catch landing pads, on the other hand, have the same dominance<br>
relationship that the rest of user code has (and the same problems).<br>
<br>
Since you should never branch to XYZ under normal circumstances, you<br>
should never rely on its predecessor's values anyway. That's the whole<br>
point of having @llvm.eh.exception and @llvm.eh.selector, as it's the<br>
role of the personality routine to pass information between the user<br>
code and unwinding code.<br>
<br>
In essence, in compiler generated landing pads, you should never<br>
generate a use of user values. But if XYZ is user code, it's user<br>
problem. ;)<br>
<br>
cheers,<br>
<font color="#888888">--renato<br>
</font><br>
PS: abnormal cases like throwing on a destructor when previously<br>
thrown inside a constructor leads to termination, so even if you "use"<br>
the value in the catch area, you won't get there anyway. ;)<br>
<div><div></div><div class="h5"><br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</div></div></blockquote></div><br></div>