[llvm-dev] RFC: Killing undef and spreading poison (original) (raw)

Sanjoy Das via llvm-dev llvm-dev at lists.llvm.org
Thu Oct 20 14:05:57 PDT 2016


Hi Krzysztof,

Krzysztof Parzyszek wrote:

In both of these cases, the expression tree in the IR is going to look like == (freeze(%x), freeze(%x))

The %a and %b are just labels on values, which are defined in the exact same way. How do you differentiate these two?

freeze is an llvm::Instruction. You'd differentiate them the same way you'd differentiate

%a = load i32, i32* @global call void @foo() %b = load i32, i32* @global print(%a == %b)

from

%a = load i32, i32* @global %b = %a ;; alias these somehow call void @foo() print(%a == %b)

freeze won't be a operator, so you won't have a FreezeConstantExpr etc.

If %a = freeze(%x), is %a+1 == %a+1?

Yes.

-- Sanjoy



More information about the llvm-dev mailing list