Index: llvm/lib/Analysis/ValueTracking.cpp =================================================================== --- llvm/lib/Analysis/ValueTracking.cpp +++ llvm/lib/Analysis/ValueTracking.cpp @@ -4693,8 +4693,9 @@ if (isa(C) || isa(C)) return false; - // TODO: Add ConstantFP and pointers. - if (isa(C) || isa(C) ) + // TODO: Add ConstantFP. + if (isa(C) || isa(C) || + isa(C)) return true; if (C->getType()->isVectorTy()) Index: llvm/test/Transforms/InstSimplify/freeze.ll =================================================================== --- llvm/test/Transforms/InstSimplify/freeze.ll +++ llvm/test/Transforms/InstSimplify/freeze.ll @@ -51,12 +51,9 @@ ret i32()* %k } -; TODO: This is not poison. - define i32* @make_const_null() { ; CHECK-LABEL: @make_const_null( -; CHECK-NEXT: [[K:%.*]] = freeze i32* null -; CHECK-NEXT: ret i32* [[K]] +; CHECK-NEXT: ret i32* null ; %k = freeze i32* null ret i32* %k @@ -208,8 +205,7 @@ define i32* @gep_inbounds_null() { ; CHECK-LABEL: @gep_inbounds_null( -; CHECK-NEXT: [[K:%.*]] = freeze i32* null -; CHECK-NEXT: ret i32* [[K]] +; CHECK-NEXT: ret i32* null ; %p = getelementptr inbounds i32, i32* null, i32 0 %k = freeze i32* %p