diff options
| author | Chris Lattner <sabre@nondot.org> | 2010-03-05 08:46:26 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2010-03-05 08:46:26 +0000 |
| commit | 067459c62b09822e015201461bbf67180fa03b1d (patch) | |
| tree | 7795aa70ca663cf8c0bd91d222875af0b5c6e88c /llvm/test | |
| parent | fc13a0343c1075c54cf70d983510527cab12ee4a (diff) | |
| download | bcm5719-llvm-067459c62b09822e015201461bbf67180fa03b1d.tar.gz bcm5719-llvm-067459c62b09822e015201461bbf67180fa03b1d.zip | |
Fix PR6503. This turned into a much more interesting and nasty bug. Various
parts of the cmp|cmp and cmp&cmp folding logic wasn't prepared for vectors
(unrelated to the bug but noticed while in the code) and the code was
*definitely* not safe to use by the (cast icmp)|(cast icmp) handling logic
that I added in r95855. Fix all this up by changing the various routines
to more consistently use IRBuilder and not pass in the I which had the wrong
type.
llvm-svn: 97801
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/Transforms/InstCombine/crash.ll | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/crash.ll b/llvm/test/Transforms/InstCombine/crash.ll index 2faa5392d4b..854bfc81de2 100644 --- a/llvm/test/Transforms/InstCombine/crash.ll +++ b/llvm/test/Transforms/InstCombine/crash.ll @@ -237,3 +237,18 @@ entry: %or = or i32 %and42, %and47 ret i32 %or } + +; PR6503 +define void @test12(i32* %A) nounwind { +entry: + %tmp1 = load i32* %A + %cmp = icmp ugt i32 1, %tmp1 ; <i1> [#uses=1] + %conv = zext i1 %cmp to i32 ; <i32> [#uses=1] + %tmp2 = load i32* %A + %cmp3 = icmp ne i32 %tmp2, 0 ; <i1> [#uses=1] + %conv4 = zext i1 %cmp3 to i32 ; <i32> [#uses=1] + %or = or i32 %conv, %conv4 ; <i32> [#uses=1] + %cmp5 = icmp ugt i32 undef, %or ; <i1> [#uses=1] + %conv6 = zext i1 %cmp5 to i32 ; <i32> [#uses=0] + ret void +} |

