diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/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()) diff --git a/llvm/test/Transforms/InstSimplify/freeze.ll b/llvm/test/Transforms/InstSimplify/freeze.ll --- a/llvm/test/Transforms/InstSimplify/freeze.ll +++ b/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