@f = external global i32
define void @test3() {
- %A = load i32* @a
- %B = load i32* @b
- %C = load i32* @c
+ %A = load i32, i32* @a
+ %B = load i32, i32* @b
+ %C = load i32, i32* @c
%t1 = add i32 %A, %B
%t2 = add i32 %t1, %C
%t3 = add i32 %C, %A
}
define void @test4() {
- %A = load i32* @a
- %B = load i32* @b
- %C = load i32* @c
+ %A = load i32, i32* @a
+ %B = load i32, i32* @b
+ %C = load i32, i32* @c
%t1 = add i32 %A, %B
%t2 = add i32 %t1, %C
%t3 = add i32 %C, %A
}
define void @test5() {
- %A = load i32* @a
- %B = load i32* @b
- %C = load i32* @c
+ %A = load i32, i32* @a
+ %B = load i32, i32* @b
+ %C = load i32, i32* @c
%t1 = add i32 %B, %A
%t2 = add i32 %t1, %C
%t3 = add i32 %C, %A
}
define i32 @test6() {
- %tmp.0 = load i32* @a
- %tmp.1 = load i32* @b
+ %tmp.0 = load i32, i32* @a
+ %tmp.1 = load i32, i32* @b
; (a+b)
%tmp.2 = add i32 %tmp.0, %tmp.1
- %tmp.4 = load i32* @c
+ %tmp.4 = load i32, i32* @c
; (a+b)+c
%tmp.5 = add i32 %tmp.2, %tmp.4
; (a+c)
; CHECK-NEXT: ret i32
}
+declare void @mumble(i32)
+
define i32 @test12(i32 %X) {
+ %X.neg = sub nsw nuw i32 0, %X
+ call void @mumble(i32 %X.neg)
%A = sub i32 1, %X
%B = sub i32 2, %X
%C = sub i32 3, %X
%Z = add i32 %Y, %C
ret i32 %Z
; CHECK-LABEL: @test12
-; CHECK-NEXT: mul i32 %X, -3
-; CHECK-NEXT: add i32{{.*}}, 6
+; CHECK: %[[mul:.*]] = mul i32 %X, -3
+; CHECK-NEXT: add i32 %[[mul]], 6
; CHECK-NEXT: ret i32
}
ret i32 %D
; CHECK-LABEL: @test14
-; CHECK-NEXT: sub i32 %X1, %X2
-; CHECK-NEXT: mul i32 %tmp, 47
+; CHECK-NEXT: %[[SUB:.*]] = sub i32 %X1, %X2
+; CHECK-NEXT: mul i32 %[[SUB]], 47
; CHECK-NEXT: ret i32
}