[llvm] r239175 - Revert "[InstCombine] Rephrase fix to SimplifyWithOpReplaced"
Renato Golin
renato.golin at linaro.org
Fri Jun 5 11:24:12 PDT 2015
Author: rengolin
Date: Fri Jun 5 13:24:12 2015
New Revision: 239175
URL: http://llvm.org/viewvc/llvm-project?rev=239175&view=rev
Log:
Revert "[InstCombine] Rephrase fix to SimplifyWithOpReplaced"
This reverts commit r239141. This commit was an attempt to reintroduce
a previous patch that broke many self-hosting bots with clang timeouts,
but it still has slowdown issues, at least on ARM, increasing the
compilation time (stage 2, clang's) by 5x.
Modified:
llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp
llvm/trunk/test/Transforms/InstCombine/select.ll
Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp?rev=239175&r1=239174&r2=239175&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp (original)
+++ llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp Fri Jun 5 13:24:12 2015
@@ -598,24 +598,6 @@ Instruction *InstCombiner::visitSelectIn
}
}
- // Consider:
- // %cmp = icmp eq i32 %x, 2147483647
- // %add = add nsw i32 %x, 1
- // %sel = select i1 %cmp, i32 -2147483648, i32 %add
- //
- // We can't replace %sel with %add unless we strip away the flags.
- auto StripBinOpFlags = [](Value *V) {
- if (auto *B = dyn_cast<BinaryOperator>(V)) {
- if (isa<OverflowingBinaryOperator>(B)) {
- B->setHasNoSignedWrap(false);
- B->setHasNoUnsignedWrap(false);
- }
- if (isa<PossiblyExactOperator>(B))
- B->setIsExact(false);
- }
- return V;
- };
-
// If we have an equality comparison then we know the value in one of the
// arms of the select. See if substituting this value into the arm and
// simplifying the result yields the same value as the other arm.
@@ -624,23 +606,23 @@ Instruction *InstCombiner::visitSelectIn
TrueVal ||
SimplifyWithOpReplaced(FalseVal, CmpRHS, CmpLHS, TLI, DL, DT, AC) ==
TrueVal)
- return ReplaceInstUsesWith(SI, StripBinOpFlags(FalseVal));
+ return ReplaceInstUsesWith(SI, FalseVal);
if (SimplifyWithOpReplaced(TrueVal, CmpLHS, CmpRHS, TLI, DL, DT, AC) ==
FalseVal ||
SimplifyWithOpReplaced(TrueVal, CmpRHS, CmpLHS, TLI, DL, DT, AC) ==
FalseVal)
- return ReplaceInstUsesWith(SI, StripBinOpFlags(FalseVal));
+ return ReplaceInstUsesWith(SI, FalseVal);
} else if (Pred == ICmpInst::ICMP_NE) {
if (SimplifyWithOpReplaced(TrueVal, CmpLHS, CmpRHS, TLI, DL, DT, AC) ==
FalseVal ||
SimplifyWithOpReplaced(TrueVal, CmpRHS, CmpLHS, TLI, DL, DT, AC) ==
FalseVal)
- return ReplaceInstUsesWith(SI, StripBinOpFlags(TrueVal));
+ return ReplaceInstUsesWith(SI, TrueVal);
if (SimplifyWithOpReplaced(FalseVal, CmpLHS, CmpRHS, TLI, DL, DT, AC) ==
TrueVal ||
SimplifyWithOpReplaced(FalseVal, CmpRHS, CmpLHS, TLI, DL, DT, AC) ==
TrueVal)
- return ReplaceInstUsesWith(SI, StripBinOpFlags(TrueVal));
+ return ReplaceInstUsesWith(SI, TrueVal);
}
// NOTE: if we wanted to, this is where to detect integer MIN/MAX
Modified: llvm/trunk/test/Transforms/InstCombine/select.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/select.ll?rev=239175&r1=239174&r2=239175&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/select.ll (original)
+++ llvm/trunk/test/Transforms/InstCombine/select.ll Fri Jun 5 13:24:12 2015
@@ -1532,13 +1532,3 @@ define i32 @test_max_of_min(i32 %a) {
%s1 = select i1 %c1, i32 %s0, i32 -1
ret i32 %s1
}
-
-define i32 @PR23757(i32 %x) {
-; CHECK-LABEL: @PR23757
-; CHECK: %[[add:.*]] = add i32 %x, 1
-; CHECK-NEXT: ret i32 %[[add]]
- %cmp = icmp eq i32 %x, 2147483647
- %add = add nsw i32 %x, 1
- %sel = select i1 %cmp, i32 -2147483648, i32 %add
- ret i32 %sel
-}
More information about the llvm-commits
mailing list