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

John Regehr via llvm-dev llvm-dev at lists.llvm.org
Thu Jun 8 20:30:11 PDT 2017


> 4. Branching on “poison” is immediate UB.

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

Well, branching on poison has to mean something.  We propose making it 
immediate UB.  Another choice would be nondeterministic branching. 
Either way, some optimizations become legal and others become illegal. 
It's just a design tradeoff.  The semantics of actual machines aren't as 
important here as you might be tempted to think.

Peter, I think you are kind of wearing us out here.  Could you please 
tone it down a bit, read everything carefully, play with some examples 
(Alive is particularly helpful, and it implements both the old and 
proposed new semantics), and then get back to us with questions that 
don't ask us to re-explain everything that we've already spent months or 
years discussing?

I'm not exactly sure which discussions Sanjoy was referring to (there 
have been many) but if you look for "the nsw story" in the archives (ca. 
2011/2012) you'll turn up a lot of material.

Thanks for your consideration,

John



More information about the llvm-dev mailing list