@@ -489,127 +489,3 @@ define void @test_scc_argmem_read_2(ptr %p) {
489
489
call void @test_scc_argmem_read_1 (ptr %p )
490
490
ret void
491
491
}
492
-
493
- define i64 @select_same_obj (i1 %c , ptr %p , i64 %x ) {
494
- ; FNATTRS: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read)
495
- ; FNATTRS-LABEL: define i64 @select_same_obj
496
- ; FNATTRS-SAME: (i1 [[C:%.*]], ptr nocapture readonly [[P:%.*]], i64 [[X:%.*]]) #[[ATTR1]] {
497
- ; FNATTRS-NEXT: entry:
498
- ; FNATTRS-NEXT: [[P2:%.*]] = getelementptr i8, ptr [[P]], i64 [[X]]
499
- ; FNATTRS-NEXT: [[P3:%.*]] = select i1 [[C]], ptr [[P]], ptr [[P2]]
500
- ; FNATTRS-NEXT: [[R:%.*]] = load i64, ptr [[P3]], align 4
501
- ; FNATTRS-NEXT: ret i64 [[R]]
502
- ;
503
- ; ATTRIBUTOR: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
504
- ; ATTRIBUTOR-LABEL: define i64 @select_same_obj
505
- ; ATTRIBUTOR-SAME: (i1 [[C:%.*]], ptr nocapture nofree readonly [[P:%.*]], i64 [[X:%.*]]) #[[ATTR0]] {
506
- ; ATTRIBUTOR-NEXT: entry:
507
- ; ATTRIBUTOR-NEXT: [[P2:%.*]] = getelementptr i8, ptr [[P]], i64 [[X]]
508
- ; ATTRIBUTOR-NEXT: [[P3:%.*]] = select i1 [[C]], ptr [[P]], ptr [[P2]]
509
- ; ATTRIBUTOR-NEXT: [[R:%.*]] = load i64, ptr [[P3]], align 4
510
- ; ATTRIBUTOR-NEXT: ret i64 [[R]]
511
- ;
512
- entry:
513
- %p2 = getelementptr i8 , ptr %p , i64 %x
514
- %p3 = select i1 %c , ptr %p , ptr %p2
515
- %r = load i64 , ptr %p3
516
- ret i64 %r
517
- }
518
-
519
- ; FIXME: This could be `memory(argmem: read)`.
520
- define i64 @select_different_obj (i1 %c , ptr %p , ptr %p2 ) {
521
- ; FNATTRS: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none)
522
- ; FNATTRS-LABEL: define i64 @select_different_obj
523
- ; FNATTRS-SAME: (i1 [[C:%.*]], ptr nocapture readonly [[P:%.*]], ptr nocapture readonly [[P2:%.*]]) #[[ATTR3]] {
524
- ; FNATTRS-NEXT: entry:
525
- ; FNATTRS-NEXT: [[P3:%.*]] = select i1 [[C]], ptr [[P]], ptr [[P2]]
526
- ; FNATTRS-NEXT: [[R:%.*]] = load i64, ptr [[P3]], align 4
527
- ; FNATTRS-NEXT: ret i64 [[R]]
528
- ;
529
- ; ATTRIBUTOR: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
530
- ; ATTRIBUTOR-LABEL: define i64 @select_different_obj
531
- ; ATTRIBUTOR-SAME: (i1 [[C:%.*]], ptr nocapture nofree readonly [[P:%.*]], ptr nocapture nofree readonly [[P2:%.*]]) #[[ATTR0]] {
532
- ; ATTRIBUTOR-NEXT: entry:
533
- ; ATTRIBUTOR-NEXT: [[P3:%.*]] = select i1 [[C]], ptr [[P]], ptr [[P2]]
534
- ; ATTRIBUTOR-NEXT: [[R:%.*]] = load i64, ptr [[P3]], align 4
535
- ; ATTRIBUTOR-NEXT: ret i64 [[R]]
536
- ;
537
- entry:
538
- %p3 = select i1 %c , ptr %p , ptr %p2
539
- %r = load i64 , ptr %p3
540
- ret i64 %r
541
- }
542
-
543
- define i64 @phi_same_obj (i1 %c , ptr %p , i64 %x ) {
544
- ; FNATTRS: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read)
545
- ; FNATTRS-LABEL: define i64 @phi_same_obj
546
- ; FNATTRS-SAME: (i1 [[C:%.*]], ptr nocapture readonly [[P:%.*]], i64 [[X:%.*]]) #[[ATTR1]] {
547
- ; FNATTRS-NEXT: entry:
548
- ; FNATTRS-NEXT: [[P2:%.*]] = getelementptr i8, ptr [[P]], i64 [[X]]
549
- ; FNATTRS-NEXT: br i1 [[C]], label [[IF:%.*]], label [[JOIN:%.*]]
550
- ; FNATTRS: if:
551
- ; FNATTRS-NEXT: br label [[JOIN]]
552
- ; FNATTRS: join:
553
- ; FNATTRS-NEXT: [[P3:%.*]] = phi ptr [ [[P]], [[IF]] ], [ [[P2]], [[ENTRY:%.*]] ]
554
- ; FNATTRS-NEXT: [[R:%.*]] = load i64, ptr [[P3]], align 4
555
- ; FNATTRS-NEXT: ret i64 [[R]]
556
- ;
557
- ; ATTRIBUTOR: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read)
558
- ; ATTRIBUTOR-LABEL: define i64 @phi_same_obj
559
- ; ATTRIBUTOR-SAME: (i1 [[C:%.*]], ptr nocapture nofree readonly [[P:%.*]], i64 [[X:%.*]]) #[[ATTR1]] {
560
- ; ATTRIBUTOR-NEXT: entry:
561
- ; ATTRIBUTOR-NEXT: [[P2:%.*]] = getelementptr i8, ptr [[P]], i64 [[X]]
562
- ; ATTRIBUTOR-NEXT: br i1 [[C]], label [[IF:%.*]], label [[JOIN:%.*]]
563
- ; ATTRIBUTOR: if:
564
- ; ATTRIBUTOR-NEXT: br label [[JOIN]]
565
- ; ATTRIBUTOR: join:
566
- ; ATTRIBUTOR-NEXT: [[P3:%.*]] = phi ptr [ [[P]], [[IF]] ], [ [[P2]], [[ENTRY:%.*]] ]
567
- ; ATTRIBUTOR-NEXT: [[R:%.*]] = load i64, ptr [[P3]], align 4
568
- ; ATTRIBUTOR-NEXT: ret i64 [[R]]
569
- ;
570
- entry:
571
- %p2 = getelementptr i8 , ptr %p , i64 %x
572
- br i1 %c , label %if , label %join
573
- if:
574
- br label %join
575
- join:
576
- %p3 = phi ptr [ %p , %if ], [ %p2 , %entry ]
577
- %r = load i64 , ptr %p3
578
- ret i64 %r
579
- }
580
-
581
- ; FIXME: This could be `memory(argmem: read)`.
582
- define i64 @phi_different_obj (i1 %c , ptr %p , ptr %p2 ) {
583
- ; FNATTRS: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none)
584
- ; FNATTRS-LABEL: define i64 @phi_different_obj
585
- ; FNATTRS-SAME: (i1 [[C:%.*]], ptr nocapture readonly [[P:%.*]], ptr nocapture readonly [[P2:%.*]]) #[[ATTR3]] {
586
- ; FNATTRS-NEXT: entry:
587
- ; FNATTRS-NEXT: br i1 [[C]], label [[IF:%.*]], label [[JOIN:%.*]]
588
- ; FNATTRS: if:
589
- ; FNATTRS-NEXT: br label [[JOIN]]
590
- ; FNATTRS: join:
591
- ; FNATTRS-NEXT: [[P3:%.*]] = phi ptr [ [[P]], [[IF]] ], [ [[P2]], [[ENTRY:%.*]] ]
592
- ; FNATTRS-NEXT: [[R:%.*]] = load i64, ptr [[P3]], align 4
593
- ; FNATTRS-NEXT: ret i64 [[R]]
594
- ;
595
- ; ATTRIBUTOR: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read)
596
- ; ATTRIBUTOR-LABEL: define i64 @phi_different_obj
597
- ; ATTRIBUTOR-SAME: (i1 [[C:%.*]], ptr nocapture nofree readonly [[P:%.*]], ptr nocapture nofree readonly [[P2:%.*]]) #[[ATTR1]] {
598
- ; ATTRIBUTOR-NEXT: entry:
599
- ; ATTRIBUTOR-NEXT: br i1 [[C]], label [[IF:%.*]], label [[JOIN:%.*]]
600
- ; ATTRIBUTOR: if:
601
- ; ATTRIBUTOR-NEXT: br label [[JOIN]]
602
- ; ATTRIBUTOR: join:
603
- ; ATTRIBUTOR-NEXT: [[P3:%.*]] = phi ptr [ [[P]], [[IF]] ], [ [[P2]], [[ENTRY:%.*]] ]
604
- ; ATTRIBUTOR-NEXT: [[R:%.*]] = load i64, ptr [[P3]], align 4
605
- ; ATTRIBUTOR-NEXT: ret i64 [[R]]
606
- ;
607
- entry:
608
- br i1 %c , label %if , label %join
609
- if:
610
- br label %join
611
- join:
612
- %p3 = phi ptr [ %p , %if ], [ %p2 , %entry ]
613
- %r = load i64 , ptr %p3
614
- ret i64 %r
615
- }
0 commit comments