@@ -214,11 +214,11 @@ define void @test4(i1 %b, i32 %x) {
214
214
; CHECK-NEXT: br i1 [[B:%.*]], label [[SW:%.*]], label [[CASE3:%.*]]
215
215
; CHECK: sw:
216
216
; CHECK-NEXT: switch i32 [[X:%.*]], label [[DEFAULT:%.*]] [
217
- ; CHECK-NEXT: i32 0, label [[CASE0:%.*]]
218
- ; CHECK-NEXT: i32 1, label [[CASE1:%.*]]
219
- ; CHECK-NEXT: i32 2, label [[CASE0]]
220
- ; CHECK-NEXT: i32 3, label [[CASE3]]
221
- ; CHECK-NEXT: i32 4, label [[DEFAULT]]
217
+ ; CHECK-NEXT: i32 0, label [[CASE0:%.*]]
218
+ ; CHECK-NEXT: i32 1, label [[CASE1:%.*]]
219
+ ; CHECK-NEXT: i32 2, label [[CASE0]]
220
+ ; CHECK-NEXT: i32 3, label [[CASE3]]
221
+ ; CHECK-NEXT: i32 4, label [[DEFAULT]]
222
222
; CHECK-NEXT: ]
223
223
; CHECK: default:
224
224
; CHECK-NEXT: call void @bar(i32 [[X]])
@@ -553,14 +553,14 @@ end:
553
553
ret i32 %ret
554
554
}
555
555
556
- define void @test14 (ptr %ptr1 , ptr noalias %ptr2 ) {
556
+ define void @test14 (ptr %ptr1 , ptr noalias %ptr2 , i1 %b1 , i1 %b2 ) {
557
557
; CHECK-LABEL: @test14(
558
558
; CHECK-NEXT: entry:
559
559
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds i32, ptr [[PTR1:%.*]], i32 1
560
560
; CHECK-NEXT: [[GEP2:%.*]] = getelementptr inbounds i32, ptr [[PTR1]], i32 2
561
561
; CHECK-NEXT: br label [[LOOP:%.*]]
562
562
; CHECK: loop:
563
- ; CHECK-NEXT: br i1 undef , label [[LOOP_IF1_CRIT_EDGE:%.*]], label [[THEN:%.*]]
563
+ ; CHECK-NEXT: br i1 [[B1:%.*]] , label [[LOOP_IF1_CRIT_EDGE:%.*]], label [[THEN:%.*]]
564
564
; CHECK: loop.if1_crit_edge:
565
565
; CHECK-NEXT: [[VAL2_PRE:%.*]] = load i32, ptr [[GEP2]], align 4
566
566
; CHECK-NEXT: br label [[IF1:%.*]]
@@ -578,7 +578,7 @@ define void @test14(ptr %ptr1, ptr noalias %ptr2) {
578
578
; CHECK-NEXT: [[PHI3:%.*]] = phi ptr [ [[GEP2]], [[THEN]] ], [ [[PTR1]], [[IF2]] ]
579
579
; CHECK-NEXT: [[VAL3]] = load i32, ptr [[GEP2]], align 4
580
580
; CHECK-NEXT: store i32 [[VAL3]], ptr [[PHI3]], align 4
581
- ; CHECK-NEXT: br i1 undef , label [[LOOP]], label [[IF1]]
581
+ ; CHECK-NEXT: br i1 [[B2:%.*]] , label [[LOOP]], label [[IF1]]
582
582
;
583
583
entry:
584
584
%gep1 = getelementptr inbounds i32 , ptr %ptr1 , i32 1
@@ -587,7 +587,7 @@ entry:
587
587
588
588
loop:
589
589
%phi1 = phi ptr [ %gep3 , %loop.end ], [ %gep1 , %entry ]
590
- br i1 undef , label %if1 , label %then
590
+ br i1 %b1 , label %if1 , label %then
591
591
592
592
593
593
if1:
@@ -608,20 +608,20 @@ loop.end:
608
608
%val3 = load i32 , ptr %gep2 , align 4
609
609
store i32 %val3 , ptr %phi3 , align 4
610
610
%gep3 = getelementptr inbounds i32 , ptr %ptr1 , i32 1
611
- br i1 undef , label %loop , label %if1
611
+ br i1 %b2 , label %loop , label %if1
612
612
}
613
613
614
614
; Make sure that the call to use_ptr does not have %p1
615
- define void @single_phi1 (ptr %p1 ) {
615
+ define void @single_phi1 (ptr %p0 , ptr %p1 , i8 %s ) {
616
616
; CHECK-LABEL: @single_phi1(
617
617
; CHECK-NEXT: entry:
618
- ; CHECK-NEXT: [[P2:%.*]] = load ptr, ptr poison , align 8
618
+ ; CHECK-NEXT: [[P2:%.*]] = load ptr, ptr [[P0:%.*]] , align 8
619
619
; CHECK-NEXT: [[CMP1:%.*]] = icmp eq ptr [[P2]], [[P1:%.*]]
620
620
; CHECK-NEXT: br i1 [[CMP1]], label [[BB4:%.*]], label [[BB1:%.*]]
621
621
; CHECK: bb1:
622
- ; CHECK-NEXT: switch i8 poison , label [[BB2:%.*]] [
623
- ; CHECK-NEXT: i8 0, label [[BB1]]
624
- ; CHECK-NEXT: i8 1, label [[BB3:%.*]]
622
+ ; CHECK-NEXT: switch i8 [[S:%.*]] , label [[BB2:%.*]] [
623
+ ; CHECK-NEXT: i8 0, label [[BB1]]
624
+ ; CHECK-NEXT: i8 1, label [[BB3:%.*]]
625
625
; CHECK-NEXT: ]
626
626
; CHECK: bb2:
627
627
; CHECK-NEXT: unreachable
@@ -633,12 +633,12 @@ define void @single_phi1(ptr %p1) {
633
633
; CHECK-NEXT: ret void
634
634
;
635
635
entry:
636
- %p2 = load ptr , ptr poison , align 8
636
+ %p2 = load ptr , ptr %p0 , align 8
637
637
%cmp1 = icmp eq ptr %p2 , %p1
638
638
br i1 %cmp1 , label %bb4 , label %bb1
639
639
640
640
bb1:
641
- switch i8 poison , label %bb2 [
641
+ switch i8 %s , label %bb2 [
642
642
i8 0 , label %bb1
643
643
i8 1 , label %bb3
644
644
]
@@ -650,23 +650,23 @@ bb3:
650
650
br label %bb4
651
651
652
652
bb4:
653
- %phi1 = phi ptr [ %p2 , %entry ], [ poison , %bb3 ]
653
+ %phi1 = phi ptr [ %p2 , %entry ], [ %p2 , %bb3 ]
654
654
%cmp2 = icmp eq ptr %phi1 , %p1
655
655
call void @use_bool (i1 %cmp2 )
656
656
call void @use_ptr (ptr %phi1 )
657
657
ret void
658
658
}
659
659
660
- define void @single_phi2 (ptr %p1 ) {
660
+ define void @single_phi2 (ptr %p0 , ptr %p1 , i8 %s ) {
661
661
; CHECK-LABEL: @single_phi2(
662
662
; CHECK-NEXT: entry:
663
- ; CHECK-NEXT: [[P2:%.*]] = load ptr, ptr poison , align 8
663
+ ; CHECK-NEXT: [[P2:%.*]] = load ptr, ptr [[P0:%.*]] , align 8
664
664
; CHECK-NEXT: [[CMP1:%.*]] = icmp eq ptr [[P2]], [[P1:%.*]]
665
665
; CHECK-NEXT: br i1 [[CMP1]], label [[BB4:%.*]], label [[BB1:%.*]]
666
666
; CHECK: bb1:
667
- ; CHECK-NEXT: switch i8 poison , label [[BB2:%.*]] [
668
- ; CHECK-NEXT: i8 0, label [[BB1]]
669
- ; CHECK-NEXT: i8 1, label [[BB3:%.*]]
667
+ ; CHECK-NEXT: switch i8 [[S:%.*]] , label [[BB2:%.*]] [
668
+ ; CHECK-NEXT: i8 0, label [[BB1]]
669
+ ; CHECK-NEXT: i8 1, label [[BB3:%.*]]
670
670
; CHECK-NEXT: ]
671
671
; CHECK: bb2:
672
672
; CHECK-NEXT: br label [[BB4]]
@@ -678,12 +678,12 @@ define void @single_phi2(ptr %p1) {
678
678
; CHECK-NEXT: ret void
679
679
;
680
680
entry:
681
- %p2 = load ptr , ptr poison , align 8
681
+ %p2 = load ptr , ptr %p0 , align 8
682
682
%cmp1 = icmp eq ptr %p2 , %p1
683
683
br i1 %cmp1 , label %bb4 , label %bb1
684
684
685
685
bb1:
686
- switch i8 poison , label %bb2 [
686
+ switch i8 %s , label %bb2 [
687
687
i8 0 , label %bb1
688
688
i8 1 , label %bb3
689
689
]
@@ -695,23 +695,23 @@ bb3:
695
695
br label %bb4
696
696
697
697
bb4:
698
- %phi1 = phi ptr [ %p2 , %entry ], [ %p2 , %bb2 ], [ poison , %bb3 ]
698
+ %phi1 = phi ptr [ %p2 , %entry ], [ %p2 , %bb2 ], [ %p2 , %bb3 ]
699
699
%cmp2 = icmp eq ptr %phi1 , %p1
700
700
call void @use_bool (i1 %cmp2 )
701
701
call void @use_ptr (ptr %phi1 )
702
702
ret void
703
703
}
704
704
705
- define void @multiple_phi1 (ptr %p1 ) {
705
+ define void @multiple_phi1 (ptr %p0 , ptr %p1 , i8 %s ) {
706
706
; CHECK-LABEL: @multiple_phi1(
707
707
; CHECK-NEXT: entry:
708
- ; CHECK-NEXT: [[P2:%.*]] = load ptr, ptr poison , align 8
708
+ ; CHECK-NEXT: [[P2:%.*]] = load ptr, ptr [[P0:%.*]] , align 8
709
709
; CHECK-NEXT: [[CMP1:%.*]] = icmp eq ptr [[P2]], [[P1:%.*]]
710
710
; CHECK-NEXT: br i1 [[CMP1]], label [[BB4:%.*]], label [[BB1:%.*]]
711
711
; CHECK: bb1:
712
- ; CHECK-NEXT: switch i8 poison , label [[BB2:%.*]] [
713
- ; CHECK-NEXT: i8 0, label [[BB1]]
714
- ; CHECK-NEXT: i8 1, label [[BB3:%.*]]
712
+ ; CHECK-NEXT: switch i8 [[S:%.*]] , label [[BB2:%.*]] [
713
+ ; CHECK-NEXT: i8 0, label [[BB1]]
714
+ ; CHECK-NEXT: i8 1, label [[BB3:%.*]]
715
715
; CHECK-NEXT: ]
716
716
; CHECK: bb2:
717
717
; CHECK-NEXT: unreachable
@@ -725,12 +725,12 @@ define void @multiple_phi1(ptr %p1) {
725
725
; CHECK-NEXT: br label [[BB5]]
726
726
;
727
727
entry:
728
- %p2 = load ptr , ptr poison , align 8
728
+ %p2 = load ptr , ptr %p0 , align 8
729
729
%cmp1 = icmp eq ptr %p2 , %p1
730
730
br i1 %cmp1 , label %bb4 , label %bb1
731
731
732
732
bb1:
733
- switch i8 poison , label %bb2 [
733
+ switch i8 %s , label %bb2 [
734
734
i8 0 , label %bb1
735
735
i8 1 , label %bb3
736
736
]
@@ -753,16 +753,16 @@ bb5:
753
753
br label %bb5
754
754
}
755
755
756
- define void @multiple_phi2 (ptr %p1 ) {
756
+ define void @multiple_phi2 (ptr %p0 , ptr %p1 , i8 %s ) {
757
757
; CHECK-LABEL: @multiple_phi2(
758
758
; CHECK-NEXT: entry:
759
- ; CHECK-NEXT: [[P2:%.*]] = load ptr, ptr poison , align 8
759
+ ; CHECK-NEXT: [[P2:%.*]] = load ptr, ptr [[P0:%.*]] , align 8
760
760
; CHECK-NEXT: [[CMP1:%.*]] = icmp eq ptr [[P2]], [[P1:%.*]]
761
761
; CHECK-NEXT: br i1 [[CMP1]], label [[BB4:%.*]], label [[BB1:%.*]]
762
762
; CHECK: bb1:
763
- ; CHECK-NEXT: switch i8 poison , label [[BB2:%.*]] [
764
- ; CHECK-NEXT: i8 0, label [[BB1]]
765
- ; CHECK-NEXT: i8 1, label [[BB3:%.*]]
763
+ ; CHECK-NEXT: switch i8 [[S:%.*]] , label [[BB2:%.*]] [
764
+ ; CHECK-NEXT: i8 0, label [[BB1]]
765
+ ; CHECK-NEXT: i8 1, label [[BB3:%.*]]
766
766
; CHECK-NEXT: ]
767
767
; CHECK: bb2:
768
768
; CHECK-NEXT: br label [[BB4]]
@@ -776,12 +776,12 @@ define void @multiple_phi2(ptr %p1) {
776
776
; CHECK-NEXT: br label [[BB5]]
777
777
;
778
778
entry:
779
- %p2 = load ptr , ptr poison , align 8
779
+ %p2 = load ptr , ptr %p0 , align 8
780
780
%cmp1 = icmp eq ptr %p2 , %p1
781
781
br i1 %cmp1 , label %bb4 , label %bb1
782
782
783
783
bb1:
784
- switch i8 poison , label %bb2 [
784
+ switch i8 %s , label %bb2 [
785
785
i8 0 , label %bb1
786
786
i8 1 , label %bb3
787
787
]
0 commit comments