@@ -654,6 +654,64 @@ join:
654
654
ret ptr %gep
655
655
}
656
656
657
+ define ptr @gep_of_phi_of_gep_flags1 (i1 %c , ptr %p ) {
658
+ ; CHECK-LABEL: @gep_of_phi_of_gep_flags1(
659
+ ; CHECK-NEXT: br i1 [[C:%.*]], label [[IF:%.*]], label [[ELSE:%.*]]
660
+ ; CHECK: if:
661
+ ; CHECK-NEXT: br label [[JOIN:%.*]]
662
+ ; CHECK: else:
663
+ ; CHECK-NEXT: br label [[JOIN]]
664
+ ; CHECK: join:
665
+ ; CHECK-NEXT: [[TMP1:%.*]] = phi i64 [ 4, [[IF]] ], [ 8, [[ELSE]] ]
666
+ ; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[P:%.*]], i64 [[TMP1]]
667
+ ; CHECK-NEXT: [[GEP:%.*]] = getelementptr i8, ptr [[TMP2]], i64 4
668
+ ; CHECK-NEXT: ret ptr [[GEP]]
669
+ ;
670
+ br i1 %c , label %if , label %else
671
+
672
+ if:
673
+ %gep1 = getelementptr inbounds i32 , ptr %p , i64 1
674
+ br label %join
675
+
676
+ else:
677
+ %gep2 = getelementptr i32 , ptr %p , i64 2
678
+ br label %join
679
+
680
+ join:
681
+ %phi = phi ptr [ %gep1 , %if ], [ %gep2 , %else ]
682
+ %gep = getelementptr i32 , ptr %phi , i64 1
683
+ ret ptr %gep
684
+ }
685
+
686
+ define ptr @gep_of_phi_of_gep_flags2 (i1 %c , ptr %p ) {
687
+ ; CHECK-LABEL: @gep_of_phi_of_gep_flags2(
688
+ ; CHECK-NEXT: br i1 [[C:%.*]], label [[IF:%.*]], label [[ELSE:%.*]]
689
+ ; CHECK: if:
690
+ ; CHECK-NEXT: br label [[JOIN:%.*]]
691
+ ; CHECK: else:
692
+ ; CHECK-NEXT: br label [[JOIN]]
693
+ ; CHECK: join:
694
+ ; CHECK-NEXT: [[TMP1:%.*]] = phi i64 [ 4, [[IF]] ], [ 8, [[ELSE]] ]
695
+ ; CHECK-NEXT: [[TMP2:%.*]] = getelementptr nuw i8, ptr [[P:%.*]], i64 [[TMP1]]
696
+ ; CHECK-NEXT: [[GEP:%.*]] = getelementptr i8, ptr [[TMP2]], i64 4
697
+ ; CHECK-NEXT: ret ptr [[GEP]]
698
+ ;
699
+ br i1 %c , label %if , label %else
700
+
701
+ if:
702
+ %gep1 = getelementptr nuw i32 , ptr %p , i64 1
703
+ br label %join
704
+
705
+ else:
706
+ %gep2 = getelementptr nuw i32 , ptr %p , i64 2
707
+ br label %join
708
+
709
+ join:
710
+ %phi = phi ptr [ %gep1 , %if ], [ %gep2 , %else ]
711
+ %gep = getelementptr i32 , ptr %phi , i64 1
712
+ ret ptr %gep
713
+ }
714
+
657
715
define ptr @gep_of_phi_of_gep_different_type (i1 %c , ptr %p ) {
658
716
; CHECK-LABEL: @gep_of_phi_of_gep_different_type(
659
717
; CHECK-NEXT: br i1 [[C:%.*]], label [[IF:%.*]], label [[ELSE:%.*]]
0 commit comments