@@ -13,17 +13,15 @@ int f1(int i) {
13
13
}
14
14
15
15
// CIR: module
16
- // CIR-NEXT: cir.func @f1(%arg0: !cir.int<s, 32> loc({{.*}})) -> !cir.int<s, 32>
17
- // CIR-NEXT: %[[I_PTR:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["i", init] {alignment = 4 : i64}
18
- // CIR-NEXT: %[[RV:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["__retval"] {alignment = 4 : i64}
19
- // CIR-NEXT: cir.store %arg0, %[[I_PTR]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>
20
- // CIR-NEXT: %[[I_IGNORED:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32>
21
- // CIR-NEXT: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32>
22
- // CIR-NEXT: cir.store %[[I]], %[[RV]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>
23
- // CIR-NEXT: cir.br ^[[BB1:[^ ]+]]
24
- // CIR-NEXT: ^[[BB1]]:
25
- // CIR-NEXT: %[[R:.*]] = cir.load %[[RV]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32>
26
- // CIR-NEXT: cir.return %[[R]] : !cir.int<s, 32>
16
+ // CIR-NEXT: cir.func @f1(%arg0: !s32i loc({{.*}})) -> !s32i
17
+ // CIR-NEXT: %[[I_PTR:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init] {alignment = 4 : i64}
18
+ // CIR-NEXT: %[[RV:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 4 : i64}
19
+ // CIR-NEXT: cir.store %arg0, %[[I_PTR]] : !s32i, !cir.ptr<!s32i>
20
+ // CIR-NEXT: %[[I_IGNORED:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!s32i>, !s32i
21
+ // CIR-NEXT: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!s32i>, !s32i
22
+ // CIR-NEXT: cir.store %[[I]], %[[RV]] : !s32i, !cir.ptr<!s32i>
23
+ // CIR-NEXT: %[[R:.*]] = cir.load %[[RV]] : !cir.ptr<!s32i>, !s32i
24
+ // CIR-NEXT: cir.return %[[R]] : !s32i
27
25
28
26
// LLVM: define i32 @f1(i32 %[[IP:.*]])
29
27
// LLVM-NEXT: %[[I_PTR:.*]] = alloca i32, i64 1, align 4
@@ -32,8 +30,6 @@ int f1(int i) {
32
30
// LLVM-NEXT: %[[I_IGNORED:.*]] = load i32, ptr %[[I_PTR]], align 4
33
31
// LLVM-NEXT: %[[I:.*]] = load i32, ptr %[[I_PTR]], align 4
34
32
// LLVM-NEXT: store i32 %[[I]], ptr %[[RV]], align 4
35
- // LLVM-NEXT: br label %[[BB1:.*]]
36
- // LLVM: [[BB1]]:
37
33
// LLVM-NEXT: %[[R:.*]] = load i32, ptr %[[RV]], align 4
38
34
// LLVM-NEXT: ret i32 %[[R]]
39
35
@@ -47,20 +43,16 @@ int f1(int i) {
47
43
48
44
int f2 (void ) { return 3 ; }
49
45
50
- // CIR: cir.func @f2() -> !cir.int<s, 32>
51
- // CIR-NEXT: %[[RV:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["__retval"] {alignment = 4 : i64}
52
- // CIR-NEXT: %[[THREE:.*]] = cir.const #cir.int<3> : !cir.int<s, 32>
53
- // CIR-NEXT: cir.store %[[THREE]], %[[RV]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>
54
- // CIR-NEXT: cir.br ^[[BB1:[^ ]+]]
55
- // CIR-NEXT: ^[[BB1]]:
56
- // CIR-NEXT: %[[R:.*]] = cir.load %0 : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32>
57
- // CIR-NEXT: cir.return %[[R]] : !cir.int<s, 32>
46
+ // CIR: cir.func @f2() -> !s32i
47
+ // CIR-NEXT: %[[RV:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 4 : i64}
48
+ // CIR-NEXT: %[[THREE:.*]] = cir.const #cir.int<3> : !s32i
49
+ // CIR-NEXT: cir.store %[[THREE]], %[[RV]] : !s32i, !cir.ptr<!s32i>
50
+ // CIR-NEXT: %[[R:.*]] = cir.load %0 : !cir.ptr<!s32i>, !s32i
51
+ // CIR-NEXT: cir.return %[[R]] : !s32i
58
52
59
53
// LLVM: define i32 @f2()
60
54
// LLVM-NEXT: %[[RV:.*]] = alloca i32, i64 1, align 4
61
55
// LLVM-NEXT: store i32 3, ptr %[[RV]], align 4
62
- // LLVM-NEXT: br label %[[BB1:.*]]
63
- // LLVM: [[BB1]]:
64
56
// LLVM-NEXT: %[[R:.*]] = load i32, ptr %[[RV]], align 4
65
57
// LLVM-NEXT: ret i32 %[[R]]
66
58
@@ -73,26 +65,22 @@ int f3(void) {
73
65
return i ;
74
66
}
75
67
76
- // CIR: cir.func @f3() -> !cir.int<s, 32>
77
- // CIR-NEXT: %[[RV:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["__retval"] {alignment = 4 : i64}
78
- // CIR-NEXT: %[[I_PTR:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["i", init] {alignment = 4 : i64}
79
- // CIR-NEXT: %[[THREE:.*]] = cir.const #cir.int<3> : !cir.int<s, 32>
80
- // CIR-NEXT: cir.store %[[THREE]], %[[I_PTR]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>
81
- // CIR-NEXT: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32>
82
- // CIR-NEXT: cir.store %[[I]], %[[RV]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>
83
- // CIR-NEXT: cir.br ^[[BB1:[^ ]+]]
84
- // CIR-NEXT: ^[[BB1]]:
85
- // CIR-NEXT: %[[R:.*]] = cir.load %[[RV]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32>
86
- // CIR-NEXT: cir.return %[[R]] : !cir.int<s, 32>
68
+ // CIR: cir.func @f3() -> !s32i
69
+ // CIR-NEXT: %[[RV:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 4 : i64}
70
+ // CIR-NEXT: %[[I_PTR:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init] {alignment = 4 : i64}
71
+ // CIR-NEXT: %[[THREE:.*]] = cir.const #cir.int<3> : !s32i
72
+ // CIR-NEXT: cir.store %[[THREE]], %[[I_PTR]] : !s32i, !cir.ptr<!s32i>
73
+ // CIR-NEXT: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!s32i>, !s32i
74
+ // CIR-NEXT: cir.store %[[I]], %[[RV]] : !s32i, !cir.ptr<!s32i>
75
+ // CIR-NEXT: %[[R:.*]] = cir.load %[[RV]] : !cir.ptr<!s32i>, !s32i
76
+ // CIR-NEXT: cir.return %[[R]] : !s32i
87
77
88
78
// LLVM: define i32 @f3()
89
79
// LLVM-NEXT: %[[RV:.*]] = alloca i32, i64 1, align 4
90
80
// LLVM-NEXT: %[[I_PTR:.*]] = alloca i32, i64 1, align 4
91
81
// LLVM-NEXT: store i32 3, ptr %[[I_PTR]], align 4
92
82
// LLVM-NEXT: %[[I:.*]] = load i32, ptr %[[I_PTR]], align 4
93
83
// LLVM-NEXT: store i32 %[[I]], ptr %[[RV]], align 4
94
- // LLVM-NEXT: br label %[[BB1:.*]]
95
- // LLVM: [[BB1]]:
96
84
// LLVM-NEXT: %[[R:.*]] = load i32, ptr %[[RV]], align 4
97
85
// LLVM-NEXT: ret i32 %[[R]]
98
86
0 commit comments