<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>