@@ -2281,16 +2281,16 @@ define void @call_via_pointer_with_dead_args(i32* %a, i32* %b, void (i32*, i32*,
2281
2281
call void %fp (i32* %a , i32* %b , i32* %a , i64 -1 , i32** null )
2282
2282
ret void
2283
2283
}
2284
- ; FIXME: We have to prevent the propagation of %fp in the new pm CGSCC pass until the CallGraphUpdater can handle the new call edge.
2284
+
2285
2285
define internal void @call_via_pointer_with_dead_args_internal_a (i32* %a , i32* %b , void (i32* , i32* , i32* , i64 , i32** )* %fp ) {
2286
2286
; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@call_via_pointer_with_dead_args_internal_a
2287
2287
; NOT_CGSCC_NPM-SAME: (i32* [[A:%.*]], i32* noundef nonnull align 128 dereferenceable(4) [[B:%.*]]) {
2288
2288
; NOT_CGSCC_NPM-NEXT: call void @called_via_pointer(i32* [[A]], i32* nonnull align 128 dereferenceable(4) [[B]], i32* [[A]], i64 -1, i32** null)
2289
2289
; NOT_CGSCC_NPM-NEXT: ret void
2290
2290
;
2291
2291
; IS__CGSCC____-LABEL: define {{[^@]+}}@call_via_pointer_with_dead_args_internal_a
2292
- ; IS__CGSCC____-SAME: (i32* [[A:%.*]], i32* noundef nonnull align 128 dereferenceable(4) [[B:%.*]], void (i32*, i32*, i32*, i64, i32**)* nocapture nofree noundef nonnull [[FP :%.*]]) {
2293
- ; IS__CGSCC____-NEXT: call void [[FP]] (i32* [[A]], i32* nonnull align 128 dereferenceable(4) [[B]] , i32* [[A]] , i64 -1 , i32** null )
2292
+ ; IS__CGSCC____-SAME: (i32* [[A:%.*]], i32* noalias nocapture nofree nonnull readnone align 128 dereferenceable(4) [[B:%.*]]) {
2293
+ ; IS__CGSCC____-NEXT: call void @called_via_pointer (i32* [[A]], i32* noalias nocapture nofree nonnull readnone align 128 dereferenceable(4) undef , i32* noalias nocapture nofree readnone undef , i64 undef , i32** noalias nocapture nofree readnone align 4294967296 undef )
2294
2294
; IS__CGSCC____-NEXT: ret void
2295
2295
;
2296
2296
call void %fp (i32* %a , i32* %b , i32* %a , i64 -1 , i32** null )
@@ -2303,8 +2303,8 @@ define internal void @call_via_pointer_with_dead_args_internal_b(i32* %a, i32* %
2303
2303
; NOT_CGSCC_NPM-NEXT: ret void
2304
2304
;
2305
2305
; IS__CGSCC____-LABEL: define {{[^@]+}}@call_via_pointer_with_dead_args_internal_b
2306
- ; IS__CGSCC____-SAME: (i32* [[A:%.*]], i32* noundef nonnull align 128 dereferenceable(4) [[B:%.*]], void (i32*, i32*, i32*, i64, i32**)* nocapture nofree noundef nonnull [[FP :%.*]]) {
2307
- ; IS__CGSCC____-NEXT: call void [[FP]] (i32* [[A]], i32* nonnull align 128 dereferenceable(4) [[B]], i32* [[A]], i64 -1, i32** null )
2306
+ ; IS__CGSCC____-SAME: (i32* [[A:%.*]], i32* noalias nocapture nofree nonnull readnone align 128 dereferenceable(4) [[B:%.*]]) {
2307
+ ; IS__CGSCC____-NEXT: call void @called_via_pointer_internal_2 (i32* [[A]])
2308
2308
; IS__CGSCC____-NEXT: ret void
2309
2309
;
2310
2310
call void %fp (i32* %a , i32* %b , i32* %a , i64 -1 , i32** null )
@@ -2327,12 +2327,10 @@ define void @call_via_pointer_with_dead_args_caller(i32* %a, i32* %b) {
2327
2327
; IS__CGSCC____-SAME: (i32* [[A:%.*]], i32* [[B:%.*]]) {
2328
2328
; IS__CGSCC____-NEXT: [[PTR1:%.*]] = alloca i32, align 128
2329
2329
; IS__CGSCC____-NEXT: [[PTR2:%.*]] = alloca i32, align 128
2330
- ; IS__CGSCC____-NEXT: [[PTR3:%.*]] = alloca i32, align 128
2331
- ; IS__CGSCC____-NEXT: [[PTR4:%.*]] = alloca i32, align 128
2332
2330
; IS__CGSCC____-NEXT: call void @call_via_pointer_with_dead_args(i32* [[A]], i32* noundef nonnull align 128 dereferenceable(4) [[PTR1]], void (i32*, i32*, i32*, i64, i32**)* nocapture nofree noundef nonnull @called_via_pointer)
2333
2331
; IS__CGSCC____-NEXT: call void @call_via_pointer_with_dead_args(i32* [[A]], i32* noundef nonnull align 128 dereferenceable(4) [[PTR2]], void (i32*, i32*, i32*, i64, i32**)* nocapture nofree noundef nonnull @called_via_pointer_internal_1)
2334
- ; IS__CGSCC____-NEXT: call void @call_via_pointer_with_dead_args_internal_a(i32* [[B]], i32* noundef nonnull align 128 dereferenceable(4) [[PTR3]], void (i32*, i32*, i32*, i64, i32**)* nocapture nofree noundef nonnull @called_via_pointer )
2335
- ; IS__CGSCC____-NEXT: call void @call_via_pointer_with_dead_args_internal_b(i32* [[B]], i32* noundef nonnull align 128 dereferenceable(4) [[PTR4]], void (i32*, i32*, i32*, i64, i32**)* nocapture nofree noundef nonnull @called_via_pointer_internal_2 )
2332
+ ; IS__CGSCC____-NEXT: call void @call_via_pointer_with_dead_args_internal_a(i32* [[B]], i32* noalias nocapture nofree nonnull readnone align 128 dereferenceable(4) undef )
2333
+ ; IS__CGSCC____-NEXT: call void @call_via_pointer_with_dead_args_internal_b(i32* [[B]], i32* noalias nocapture nofree nonnull readnone align 128 dereferenceable(4) undef )
2336
2334
; IS__CGSCC____-NEXT: ret void
2337
2335
;
2338
2336
%ptr1 = alloca i32 , align 128
@@ -2373,12 +2371,19 @@ entry:
2373
2371
}
2374
2372
; FIXME: Figure out why the MODULE has the unused arguments still
2375
2373
define internal void @called_via_pointer_internal_2 (i32* %a , i32* %b , i32* %c , i64 %d , i32** %e ) {
2376
- ; CHECK-LABEL: define {{[^@]+}}@called_via_pointer_internal_2
2377
- ; CHECK-SAME: (i32* [[A:%.*]], i32* nocapture nofree readnone [[B:%.*]], i32* nocapture nofree readnone [[C:%.*]], i64 [[D:%.*]], i32** nocapture nofree readnone [[E:%.*]]) {
2378
- ; CHECK-NEXT: entry:
2379
- ; CHECK-NEXT: tail call void @use_i32p(i32* [[A]])
2380
- ; CHECK-NEXT: tail call void @use_i32p(i32* [[A]])
2381
- ; CHECK-NEXT: ret void
2374
+ ; NOT_CGSCC_NPM-LABEL: define {{[^@]+}}@called_via_pointer_internal_2
2375
+ ; NOT_CGSCC_NPM-SAME: (i32* [[A:%.*]], i32* nocapture nofree readnone [[B:%.*]], i32* nocapture nofree readnone [[C:%.*]], i64 [[D:%.*]], i32** nocapture nofree readnone [[E:%.*]]) {
2376
+ ; NOT_CGSCC_NPM-NEXT: entry:
2377
+ ; NOT_CGSCC_NPM-NEXT: tail call void @use_i32p(i32* [[A]])
2378
+ ; NOT_CGSCC_NPM-NEXT: tail call void @use_i32p(i32* [[A]])
2379
+ ; NOT_CGSCC_NPM-NEXT: ret void
2380
+ ;
2381
+ ; IS__CGSCC____-LABEL: define {{[^@]+}}@called_via_pointer_internal_2
2382
+ ; IS__CGSCC____-SAME: (i32* [[A:%.*]]) {
2383
+ ; IS__CGSCC____-NEXT: entry:
2384
+ ; IS__CGSCC____-NEXT: tail call void @use_i32p(i32* [[A]])
2385
+ ; IS__CGSCC____-NEXT: tail call void @use_i32p(i32* [[A]])
2386
+ ; IS__CGSCC____-NEXT: ret void
2382
2387
;
2383
2388
entry:
2384
2389
tail call void @use_i32p (i32* %a )
0 commit comments