diff options
author | Sanjoy Das <sanjoy@playingwithpointers.com> | 2015-08-28 19:09:31 +0000 |
---|---|---|
committer | Sanjoy Das <sanjoy@playingwithpointers.com> | 2015-08-28 19:09:31 +0000 |
commit | 6f5dca70ed1c030957a45ad91bd295921f17b18d (patch) | |
tree | 09e596d886fc42b8caa61a48ae6939fd8245c389 /llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp | |
parent | c0225ca2769de22834afba06b1b8e7f318c0f7b7 (diff) | |
download | bcm5719-llvm-6f5dca70ed1c030957a45ad91bd295921f17b18d.tar.gz bcm5719-llvm-6f5dca70ed1c030957a45ad91bd295921f17b18d.zip |
[InstCombine] Fix PR24605.
PR24605 is caused due to an incorrect insert point in instcombine's IR
builder. When simplifying
%t = add X Y
...
%m = icmp ... %t
the replacement for %t should be placed before %t, not before %m, as
there could be a use of %t between %t and %m.
llvm-svn: 246315
Diffstat (limited to 'llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp')
-rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp index 905f66a380f..6e4336ef875 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp @@ -2140,6 +2140,12 @@ bool InstCombiner::OptimizeOverflowCheck(OverflowCheckFlavor OCF, Value *LHS, return true; }; + // If the overflow check was an add followed by a compare, the insertion point + // may be pointing to the compare. We want to insert the new instructions + // before the add in case there are uses of the add between the add and the + // compare. + Builder->SetInsertPoint(&OrigI); + switch (OCF) { case OCF_INVALID: llvm_unreachable("bad overflow check kind!"); |