@@ -654,6 +654,64 @@ join:
654654 ret ptr %gep
655655}
656656
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+
657715define ptr @gep_of_phi_of_gep_different_type (i1 %c , ptr %p ) {
658716; CHECK-LABEL: @gep_of_phi_of_gep_different_type(
659717; CHECK-NEXT: br i1 [[C:%.*]], label [[IF:%.*]], label [[ELSE:%.*]]
0 commit comments