-; RUN: llvm-as < %s | lli -force-interpreter=false
+; RUN: %lli %s > /dev/null
+; XFAIL: arm
-%A = global int 0
+@A = global i32 0 ; <i32*> [#uses=1]
-int %main() {
- %Ret = call int %test(bool true, int 0)
- ret int %Ret
+define i32 @main() {
+ %Ret = call i32 @test( i1 true, i32 0 ) ; <i32> [#uses=1]
+ ret i32 %Ret
}
-int %test(bool %c, int %A) {
- br bool %c, label %Taken1, label %NotTaken
-
-Cont:
- %V = phi int [0, %NotTaken],
- [ sub (int cast (int* %A to int), int 1234), %Taken1]
- ret int 0
-
-NotTaken:
- br label %Cont
-
-Taken1:
- %B = seteq int %A, 0
- ; Code got inserted here, breaking the condition code.
- br bool %B, label %Cont, label %ExitError
-
-ExitError:
- ret int 12
-
+define i32 @test(i1 %c, i32 %A) {
+ br i1 %c, label %Taken1, label %NotTaken
+Cont: ; preds = %Taken1, %NotTaken
+ %V = phi i32 [ 0, %NotTaken ], [ sub (i32 ptrtoint (i32* @A to i32), i32 1234), %Taken1 ] ; <i32> [#uses=0]
+ ret i32 0
+NotTaken: ; preds = %0
+ br label %Cont
+Taken1: ; preds = %0
+ %B = icmp eq i32 %A, 0 ; <i1> [#uses=1]
+ br i1 %B, label %Cont, label %ExitError
+ExitError: ; preds = %Taken1
+ ret i32 12
}
+