[llvm-dev] RFC: Killing undef and spreading poison

Peter Lawrence via llvm-dev llvm-dev at lists.llvm.org
Thu Jun 8 16:04:59 PDT 2017

            From your paper   http://www.cs.utah.edu/~regehr/papers/undef-pldi17.pdf <http://www.cs.utah.edu/~regehr/papers/undef-pldi17.pdf>  we have this proposal

1.  remove “undef” and use “poison” instead

2. Introduce a new instruction:  “freeze” …

3. All operations over “poison” unconditionally return “poison” except “phi", “select", and "freeze"

4. Branching on “poison” is immediate UB.

3:::   then  (X & 0)   does not translate to  (0)   when X is “poison” ?,  that seems strange, can you explain / elaborate ?

4:::   hmm, I know of no machine where this is what actually happens[*],  can you explain / elaborate ?

Peter Lawrence.

[*. I am assuming you are using consistent terminology, where in the beginning of the paper you make a
 distinction between immediate and deferred undefined, with immediate being a trap like divide-by-zero.]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170608/4d387512/attachment-0001.html>

More information about the llvm-dev mailing list