mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-25 21:18:19 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97801 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user