<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Sanjoy,<div class=""> From your paper <a href="http://www.cs.utah.edu/~regehr/papers/undef-pldi17.pdf" class="">http://www.cs.utah.edu/~regehr/papers/undef-pldi17.pdf</a> we have this proposal<div class=""><br class=""></div><div class="">1. remove “undef” and use “poison” instead</div><div class=""><br class=""></div><div class="">2. Introduce a new instruction: “freeze” …</div><div class=""><br class=""></div><div class="">3. All operations over “poison” unconditionally return “poison” except “phi", “select", and "freeze"</div><div class=""><br class=""></div><div class="">4. Branching on “poison” is immediate UB.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">3::: then (X & 0) does not translate to (0) when X is “poison” ?, that seems strange, can you explain / elaborate ?</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">4::: hmm, I know of no machine where this is what actually happens[*], can you explain / elaborate ?</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">Peter Lawrence.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">[*. I am assuming you are using consistent terminology, where in the beginning of the paper you make a</div><div class=""> distinction between immediate and deferred undefined, with immediate being a trap like divide-by-zero.]</div><div class=""><br class=""></div></div></body></html>