aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/ValueTracking.cpp
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2022-12-03 19:32:41 -0500
committerMatt Arsenault <Matthew.Arsenault@amd.com>2022-12-06 09:01:39 -0500
commit7f4429c0e48b9c7d31ff587604707cf10d3acdf0 (patch)
treeef580bf3227a6944e83c8146247a4a29a1854bd9 /llvm/lib/Analysis/ValueTracking.cpp
parentd216759f71afd03242f43953eac2b06537c793ea (diff)
downloadllvm-7f4429c0e48b9c7d31ff587604707cf10d3acdf0.zip
llvm-7f4429c0e48b9c7d31ff587604707cf10d3acdf0.tar.gz
llvm-7f4429c0e48b9c7d31ff587604707cf10d3acdf0.tar.bz2
ValueTracking: Teach CannotBeOrderedLessThanZero about copysign
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
-rw-r--r--llvm/lib/Analysis/ValueTracking.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp
index bc63368..8e97637 100644
--- a/llvm/lib/Analysis/ValueTracking.cpp
+++ b/llvm/lib/Analysis/ValueTracking.cpp
@@ -3694,7 +3694,10 @@ static bool cannotBeOrderedLessThanZeroImpl(const Value *V,
case Intrinsic::exp2:
case Intrinsic::fabs:
return true;
-
+ case Intrinsic::copysign:
+ // Only the sign operand matters.
+ return cannotBeOrderedLessThanZeroImpl(I->getOperand(1), TLI, true,
+ Depth + 1);
case Intrinsic::sqrt:
// sqrt(x) is always >= -0 or NaN. Moreover, sqrt(x) == -0 iff x == -0.
if (!SignBitOnly)