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

Krzysztof Parzyszek via llvm-dev llvm-dev at lists.llvm.org
Tue Oct 18 13:22:23 PDT 2016


On 10/18/2016 3:12 PM, Sanjoy Das wrote:
> But in the new proposal, in:
>
>   %x = freeze(poison)
>   %y = xor %x, %x
>
> that is no longer allowed (%y _has_ to be 0) -- all uses of %x will see
> some garbage, but fixed bit pattern.

What about this:
   %x = phi poison, poison  (I'm simplifying the syntax here)
Can this be simplified to "%x = poison", i.e. can we rauw(%x, poison)?

Or
   %x = load %uninitialized_var
   %y = load %uninitialized_var
   // are %x and %y equal (i.e. is "cmp eq %x, %y" == true)?
   // is freeze(%x) equal to freeze(%y)?

I'm wary about such rules. I have a feeling that this is going to create 
its own set of problems.

-Krzysztof


-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, 
hosted by The Linux Foundation


More information about the llvm-dev mailing list