<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jan 29, 2015 at 9:43 PM, Sanjoy Das <span dir="ltr"><<a href="mailto:sanjoy@playingwithpointers.com" target="_blank">sanjoy@playingwithpointers.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":eda" class="a3s" style="overflow:hidden">One way around this is to say that there are some special<br>
instructions, icmp, sext and zext which produce a value solely<br>
composed of poison bits if any of their input bits is poison.  So<br>
`<poison> icmp X` is poison for any value of X, including INT_MAX.<br>
This is one way poison could be fundamentally different from undef.</div></blockquote></div><br>So far, this is the model I like the best, but I do still have some concern.</div><div class="gmail_extra"><br></div><div class="gmail_extra">The primary concern I have is that with this model, zext is no longer 100% equivalent to anyext + mask. Much like you say, you *could* implement zext that way, but once you convert them, the poison is lost.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Maybe that's OK though. I'm curious what others think. I haven't really had enough time to fully explore this in my head.</div></div>