aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/InstructionSimplify.cpp
diff options
context:
space:
mode:
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2016-09-02 15:55:25 +0000
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2016-09-02 15:55:25 +0000
commitbff3fd67006193a8b0bdde78741810c1887d7a74 (patch)
tree2952c66f6b18d3e496ca6f632c1ec9782120b4ed /llvm/lib/Analysis/InstructionSimplify.cpp
parent1d1613c966cbe168ab1fcacbc39ea0ba8fde9e31 (diff)
downloadllvm-bff3fd67006193a8b0bdde78741810c1887d7a74.zip
llvm-bff3fd67006193a8b0bdde78741810c1887d7a74.tar.gz
llvm-bff3fd67006193a8b0bdde78741810c1887d7a74.tar.bz2
Simplify code a bit. No functional change intended.
We don't need to call `GetCompareTy(LHS)' every single time true or false is returned from function SimplifyFCmpInst as suggested by Sanjay in review D24142. llvm-svn: 280491
Diffstat (limited to 'llvm/lib/Analysis/InstructionSimplify.cpp')
-rw-r--r--llvm/lib/Analysis/InstructionSimplify.cpp31
1 files changed, 16 insertions, 15 deletions
diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp
index 2146376..808674f 100644
--- a/llvm/lib/Analysis/InstructionSimplify.cpp
+++ b/llvm/lib/Analysis/InstructionSimplify.cpp
@@ -3194,17 +3194,18 @@ static Value *SimplifyFCmpInst(unsigned Predicate, Value *LHS, Value *RHS,
}
// Fold trivial predicates.
+ Type *RetTy = GetCompareTy(LHS);
if (Pred == FCmpInst::FCMP_FALSE)
- return ConstantInt::get(GetCompareTy(LHS), 0);
+ return getFalse(RetTy);
if (Pred == FCmpInst::FCMP_TRUE)
- return ConstantInt::get(GetCompareTy(LHS), 1);
+ return getTrue(RetTy);
// UNO/ORD predicates can be trivially folded if NaNs are ignored.
if (FMF.noNaNs()) {
if (Pred == FCmpInst::FCMP_UNO)
- return ConstantInt::get(GetCompareTy(LHS), 0);
+ return getFalse(RetTy);
if (Pred == FCmpInst::FCMP_ORD)
- return ConstantInt::get(GetCompareTy(LHS), 1);
+ return getTrue(RetTy);
}
// fcmp pred x, undef and fcmp pred undef, x
@@ -3212,15 +3213,15 @@ static Value *SimplifyFCmpInst(unsigned Predicate, Value *LHS, Value *RHS,
if (isa<UndefValue>(LHS) || isa<UndefValue>(RHS)) {
// Choosing NaN for the undef will always make unordered comparison succeed
// and ordered comparison fail.
- return ConstantInt::get(GetCompareTy(LHS), CmpInst::isUnordered(Pred));
+ return ConstantInt::get(RetTy, CmpInst::isUnordered(Pred));
}
// fcmp x,x -> true/false. Not all compares are foldable.
if (LHS == RHS) {
if (CmpInst::isTrueWhenEqual(Pred))
- return ConstantInt::get(GetCompareTy(LHS), 1);
+ return getTrue(RetTy);
if (CmpInst::isFalseWhenEqual(Pred))
- return ConstantInt::get(GetCompareTy(LHS), 0);
+ return getFalse(RetTy);
}
// Handle fcmp with constant RHS
@@ -3235,11 +3236,11 @@ static Value *SimplifyFCmpInst(unsigned Predicate, Value *LHS, Value *RHS,
// If the constant is a nan, see if we can fold the comparison based on it.
if (CFP->getValueAPF().isNaN()) {
if (FCmpInst::isOrdered(Pred)) // True "if ordered and foo"
- return ConstantInt::get(GetCompareTy(LHS), 0);
+ return getFalse(RetTy);
assert(FCmpInst::isUnordered(Pred) &&
"Comparison must be either ordered or unordered!");
// True if unordered.
- return ConstantInt::get(GetCompareTy(LHS), 1);
+ return getTrue(RetTy);
}
// Check whether the constant is an infinity.
if (CFP->getValueAPF().isInfinity()) {
@@ -3247,10 +3248,10 @@ static Value *SimplifyFCmpInst(unsigned Predicate, Value *LHS, Value *RHS,
switch (Pred) {
case FCmpInst::FCMP_OLT:
// No value is ordered and less than negative infinity.
- return ConstantInt::get(GetCompareTy(LHS), 0);
+ return getFalse(RetTy);
case FCmpInst::FCMP_UGE:
// All values are unordered with or at least negative infinity.
- return ConstantInt::get(GetCompareTy(LHS), 1);
+ return getTrue(RetTy);
default:
break;
}
@@ -3258,10 +3259,10 @@ static Value *SimplifyFCmpInst(unsigned Predicate, Value *LHS, Value *RHS,
switch (Pred) {
case FCmpInst::FCMP_OGT:
// No value is ordered and greater than infinity.
- return ConstantInt::get(GetCompareTy(LHS), 0);
+ return getFalse(RetTy);
case FCmpInst::FCMP_ULE:
// All values are unordered with and at most infinity.
- return ConstantInt::get(GetCompareTy(LHS), 1);
+ return getTrue(RetTy);
default:
break;
}
@@ -3271,12 +3272,12 @@ static Value *SimplifyFCmpInst(unsigned Predicate, Value *LHS, Value *RHS,
switch (Pred) {
case FCmpInst::FCMP_UGE:
if (CannotBeOrderedLessThanZero(LHS, Q.TLI))
- return ConstantInt::get(GetCompareTy(LHS), 1);
+ return getTrue(RetTy);
break;
case FCmpInst::FCMP_OLT:
// X < 0
if (CannotBeOrderedLessThanZero(LHS, Q.TLI))
- return ConstantInt::get(GetCompareTy(LHS), 0);
+ return getFalse(RetTy);
break;
default:
break;