Index: llvm/lib/Analysis/ValueTracking.cpp =================================================================== --- llvm/lib/Analysis/ValueTracking.cpp +++ llvm/lib/Analysis/ValueTracking.cpp @@ -3808,6 +3808,7 @@ if (const auto *II = dyn_cast(V)) { switch (II->getIntrinsicID()) { case Intrinsic::fabs: + case Intrinsic::sqrt: case Intrinsic::canonicalize: case Intrinsic::copysign: case Intrinsic::arithmetic_fence: Index: llvm/test/Transforms/InstSimplify/floating-point-compare.ll =================================================================== --- llvm/test/Transforms/InstSimplify/floating-point-compare.ll +++ llvm/test/Transforms/InstSimplify/floating-point-compare.ll @@ -1705,10 +1705,7 @@ define i1 @isKnownNeverInfinity_sqrt(double %x) { ; CHECK-LABEL: @isKnownNeverInfinity_sqrt( -; CHECK-NEXT: [[A:%.*]] = fadd ninf double [[X:%.*]], 1.000000e+00 -; CHECK-NEXT: [[E:%.*]] = call double @llvm.sqrt.f64(double [[A]]) -; CHECK-NEXT: [[R:%.*]] = fcmp une double [[E]], 0x7FF0000000000000 -; CHECK-NEXT: ret i1 [[R]] +; CHECK-NEXT: ret i1 true ; %a = fadd ninf double %x, 1.0 %e = call double @llvm.sqrt.f64(double %a)