|
22 | 22 | ; CHECK-ARM64-NEXT: _func_3identical_v3_canmerge:
|
23 | 23 | ; CHECK-ARM64-NEXT: mov {{.*}}, #0x21
|
24 | 24 | ;
|
| 25 | +; CHECK-ARM64: _func_call_thunked_1_nomerge: |
| 26 | +; CHECK-ARM64-NEXT: stp x29 |
| 27 | +; |
| 28 | +; CHECK-ARM64: _func_call_thunked_2_nomerge: |
| 29 | +; CHECK-ARM64-NEXT: _func_call_thunked_2_merge: |
| 30 | +; CHECK-ARM64-NEXT: stp x29 |
| 31 | +; |
25 | 32 | ; CHECK-ARM64: _call_all_funcs:
|
26 | 33 | ; CHECK-ARM64-NEXT: stp x29
|
27 | 34 | ;
|
|
43 | 50 | ; CHECK-ARM64-MAP-NEXT: 0x00000010 [ 2] _func_3identical_v1_canmerge
|
44 | 51 | ; CHECK-ARM64-MAP-NEXT: 0x00000000 [ 2] _func_3identical_v2_canmerge
|
45 | 52 | ; CHECK-ARM64-MAP-NEXT: 0x00000000 [ 2] _func_3identical_v3_canmerge
|
| 53 | +; CHECK-ARM64-MAP-NEXT: 0x00000020 [ 2] _func_call_thunked_1_nomerge |
| 54 | +; CHECK-ARM64-MAP-NEXT: 0x00000020 [ 2] _func_call_thunked_2_nomerge |
| 55 | +; CHECK-ARM64-MAP-NEXT: 0x00000000 [ 2] _func_call_thunked_2_merge |
46 | 56 | ; CHECK-ARM64-MAP-NEXT: 0x00000034 [ 2] _call_all_funcs
|
47 | 57 | ; CHECK-ARM64-MAP-NEXT: 0x00000050 [ 2] _take_func_addr
|
48 | 58 | ; CHECK-ARM64-MAP-NEXT: 0x00000004 [ 2] _func_2identical_v2
|
@@ -125,6 +135,30 @@ entry:
|
125 | 135 | ret void
|
126 | 136 | }
|
127 | 137 |
|
| 138 | +; Function Attrs: mustprogress nofree noinline norecurse nounwind ssp memory(readwrite, argmem: none) uwtable(sync) |
| 139 | +define void @func_call_thunked_1_nomerge() local_unnamed_addr #0 { |
| 140 | +entry: |
| 141 | + tail call void @func_2identical_v1() |
| 142 | + store volatile i8 77, ptr @g_val, align 1, !tbaa !5 |
| 143 | + ret void |
| 144 | +} |
| 145 | + |
| 146 | +; Function Attrs: mustprogress nofree noinline norecurse nounwind ssp memory(readwrite, argmem: none) uwtable(sync) |
| 147 | +define void @func_call_thunked_2_nomerge() local_unnamed_addr #0 { |
| 148 | +entry: |
| 149 | + tail call void @func_2identical_v2() |
| 150 | + store volatile i8 77, ptr @g_val, align 1, !tbaa !5 |
| 151 | + ret void |
| 152 | +} |
| 153 | + |
| 154 | +; Function Attrs: mustprogress nofree noinline norecurse nounwind ssp memory(readwrite, argmem: none) uwtable(sync) |
| 155 | +define void @func_call_thunked_2_merge() local_unnamed_addr #0 { |
| 156 | +entry: |
| 157 | + tail call void @func_2identical_v2() |
| 158 | + store volatile i8 77, ptr @g_val, align 1, !tbaa !5 |
| 159 | + ret void |
| 160 | +} |
| 161 | + |
128 | 162 | ; Function Attrs: mustprogress nofree noinline norecurse nounwind ssp uwtable(sync)
|
129 | 163 | define void @call_all_funcs() local_unnamed_addr #1 {
|
130 | 164 | entry:
|
@@ -227,6 +261,21 @@ attributes #1 = { mustprogress nofree noinline norecurse nounwind ssp uwtable(sy
|
227 | 261 | ; g_val = 33;
|
228 | 262 | ; }
|
229 | 263 | ;
|
| 264 | +; ATTR void func_call_thunked_1_nomerge() { |
| 265 | +; func_2identical_v1(); |
| 266 | +; g_val = 77; |
| 267 | +; } |
| 268 | +; |
| 269 | +; ATTR void func_call_thunked_2_nomerge() { |
| 270 | +; func_2identical_v2(); |
| 271 | +; g_val = 77; |
| 272 | +; } |
| 273 | +; |
| 274 | +; ATTR void func_call_thunked_2_merge() { |
| 275 | +; func_2identical_v2(); |
| 276 | +; g_val = 77; |
| 277 | +; } |
| 278 | +; |
230 | 279 | ; ATTR void call_all_funcs() {
|
231 | 280 | ; func_unique_1();
|
232 | 281 | ; func_unique_2_canmerge();
|
|
0 commit comments