aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-06-02 14:32:58 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-06-02 14:32:58 +0000
commit82899febf07aa2cc42761102f92609a804034ba2 (patch)
tree41b9b3784dd055041d9cbb630bf6d509255dc2db /llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
parentcbee13e04c9f7070681a66cc2d26faa86927d83c (diff)
downloadllvm-82899febf07aa2cc42761102f92609a804034ba2.zip
llvm-82899febf07aa2cc42761102f92609a804034ba2.tar.gz
llvm-82899febf07aa2cc42761102f92609a804034ba2.tar.bz2
Add the nsw flag when we detect that an add will not signed overflow.
We already had a function for checking this, we were just using it only in specialized cases. llvm-svn: 210029
Diffstat (limited to 'llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp')
-rw-r--r--llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
index c37a9cf2..4d8a1ef 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
@@ -1191,6 +1191,11 @@ Instruction *InstCombiner::visitAdd(BinaryOperator &I) {
return BinaryOperator::CreateOr(A, B);
}
+ if (!I.hasNoSignedWrap() && WillNotOverflowSignedAdd(LHS, RHS)) {
+ Changed = true;
+ I.setHasNoSignedWrap(true);
+ }
+
return Changed ? &I : nullptr;
}