@@ -398,3 +398,62 @@ join:
398
398
%phi = phi ptr [ %gep1 , %if ], [ %gep2 , %else ]
399
399
ret ptr %phi
400
400
}
401
+
402
+ define ptr @gep_of_phi_of_gep (i1 %c , ptr %p ) {
403
+ ; CHECK-LABEL: @gep_of_phi_of_gep(
404
+ ; CHECK-NEXT: br i1 [[C:%.*]], label [[IF:%.*]], label [[ELSE:%.*]]
405
+ ; CHECK: if:
406
+ ; CHECK-NEXT: br label [[JOIN:%.*]]
407
+ ; CHECK: else:
408
+ ; CHECK-NEXT: br label [[JOIN]]
409
+ ; CHECK: join:
410
+ ; CHECK-NEXT: [[TMP1:%.*]] = phi i64 [ 1, [[IF]] ], [ 2, [[ELSE]] ]
411
+ ; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i32, ptr [[P:%.*]], i64 [[TMP1]]
412
+ ; CHECK-NEXT: [[GEP:%.*]] = getelementptr i32, ptr [[TMP2]], i64 1
413
+ ; CHECK-NEXT: ret ptr [[GEP]]
414
+ ;
415
+ br i1 %c , label %if , label %else
416
+
417
+ if:
418
+ %gep1 = getelementptr i32 , ptr %p , i64 1
419
+ br label %join
420
+
421
+ else:
422
+ %gep2 = getelementptr i32 , ptr %p , i64 2
423
+ br label %join
424
+
425
+ join:
426
+ %phi = phi ptr [ %gep1 , %if ], [ %gep2 , %else ]
427
+ %gep = getelementptr i32 , ptr %phi , i64 1
428
+ ret ptr %gep
429
+ }
430
+
431
+ define ptr @gep_of_phi_of_gep_different_type (i1 %c , ptr %p ) {
432
+ ; CHECK-LABEL: @gep_of_phi_of_gep_different_type(
433
+ ; CHECK-NEXT: br i1 [[C:%.*]], label [[IF:%.*]], label [[ELSE:%.*]]
434
+ ; CHECK: if:
435
+ ; CHECK-NEXT: [[GEP1:%.*]] = getelementptr i32, ptr [[P:%.*]], i64 1
436
+ ; CHECK-NEXT: br label [[JOIN:%.*]]
437
+ ; CHECK: else:
438
+ ; CHECK-NEXT: [[GEP2:%.*]] = getelementptr i64, ptr [[P]], i64 2
439
+ ; CHECK-NEXT: br label [[JOIN]]
440
+ ; CHECK: join:
441
+ ; CHECK-NEXT: [[PHI:%.*]] = phi ptr [ [[GEP1]], [[IF]] ], [ [[GEP2]], [[ELSE]] ]
442
+ ; CHECK-NEXT: [[GEP:%.*]] = getelementptr i32, ptr [[PHI]], i64 1
443
+ ; CHECK-NEXT: ret ptr [[GEP]]
444
+ ;
445
+ br i1 %c , label %if , label %else
446
+
447
+ if:
448
+ %gep1 = getelementptr i32 , ptr %p , i64 1
449
+ br label %join
450
+
451
+ else:
452
+ %gep2 = getelementptr i64 , ptr %p , i64 2
453
+ br label %join
454
+
455
+ join:
456
+ %phi = phi ptr [ %gep1 , %if ], [ %gep2 , %else ]
457
+ %gep = getelementptr i32 , ptr %phi , i64 1
458
+ ret ptr %gep
459
+ }
0 commit comments