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 @@ -4773,7 +4773,7 @@ const auto *CE = dyn_cast(Op); if (isa(Op) || (CE && CE->isCast())) return false; - else if (isa(Op)) + else if (Instruction::isBinaryOp(Opcode)) return false; // Be conservative and return true. return true; 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 @@ -139,8 +139,7 @@ define i64 @ptrdiff() { ; CHECK-LABEL: @ptrdiff( -; CHECK-NEXT: [[R:%.*]] = freeze i64 sub (i64 ptrtoint (i16* @g to i64), i64 ptrtoint (i16* @g2 to i64)) -; CHECK-NEXT: ret i64 [[R]] +; CHECK-NEXT: ret i64 sub (i64 ptrtoint (i16* @g to i64), i64 ptrtoint (i16* @g2 to i64)) ; %i = ptrtoint i16* @g to i64 %i2 = ptrtoint i16* @g2 to i64