diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-06-02 14:32:58 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-06-02 14:32:58 +0000 |
commit | 82899febf07aa2cc42761102f92609a804034ba2 (patch) | |
tree | 41b9b3784dd055041d9cbb630bf6d509255dc2db /llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp | |
parent | cbee13e04c9f7070681a66cc2d26faa86927d83c (diff) | |
download | llvm-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.cpp | 5 |
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; } |