[llvm-dev] funnel shift, select, and poison

Krzysztof Parzyszek via llvm-dev llvm-dev at lists.llvm.org
Mon Feb 25 10:42:42 PST 2019


On 2/25/2019 12:28 PM, John Regehr via llvm-dev wrote:
> Poison has to propagate through calls and loads/stores, or else 
> basically nothing works.

Consider this:

   %v0 = call i32 @foo(poison) nounwind/readnone
   store i32 %v0, i32* %valid_address

If we assume that poison propagates through calls, we could then 
optimize this to

   %v0 = poison
   store poison, i32* %valid_address

If we somehow realized that foo is

   define i32 @foo(i32) { ret i32 0 }

then the resulting code would be different.

-Krzysztof


More information about the llvm-dev mailing list