@@ -673,15 +673,15 @@ define i8 @phi_trans4(ptr %p) {
673673; CHECK-NEXT: [[X3:%.*]] = getelementptr i8, ptr [[P:%.*]], i32 192
674674; CHECK-NEXT: store i8 -64, ptr [[X3]], align 1
675675; CHECK-NEXT: [[X:%.*]] = getelementptr i8, ptr [[P]], i32 4
676- ; CHECK-NEXT: [[Y :%.*]] = load i8, ptr [[X]], align 1
676+ ; CHECK-NEXT: [[Y2_PRE :%.*]] = load i8, ptr [[X]], align 1
677677; CHECK-NEXT: br label [[LOOP:%.*]]
678678; CHECK: loop:
679- ; CHECK-NEXT: [[Y2:%.*]] = phi i8 [ [[Y ]], [[ENTRY:%.*]] ], [ 0, [[LOOP]] ]
679+ ; CHECK-NEXT: [[Y2:%.*]] = phi i8 [ [[Y2_PRE ]], [[ENTRY:%.*]] ], [ 0, [[LOOP]] ]
680680; CHECK-NEXT: [[COND:%.*]] = call i1 @cond2()
681681; CHECK-NEXT: store i32 0, ptr [[X3]], align 4
682682; CHECK-NEXT: br i1 [[COND]], label [[LOOP]], label [[OUT:%.*]]
683683; CHECK: out:
684- ; CHECK-NEXT: [[R:%.*]] = add i8 [[Y ]], [[Y2]]
684+ ; CHECK-NEXT: [[R:%.*]] = add i8 [[Y2_PRE ]], [[Y2]]
685685; CHECK-NEXT: ret i8 [[R]]
686686;
687687entry:
@@ -772,18 +772,18 @@ define i32 @phi_trans6(ptr noalias nocapture readonly %x, i1 %cond) {
772772; CHECK-NEXT: call void @use_i32(i32 [[L0]])
773773; CHECK-NEXT: br label [[HEADER:%.*]]
774774; CHECK: header:
775- ; CHECK-NEXT: [[L1 :%.*]] = phi i32 [ [[L0]], [[ENTRY:%.*]] ], [ [[L1_PRE :%.*]], [[LATCH_HEADER_CRIT_EDGE:%.*]] ]
775+ ; CHECK-NEXT: [[L1_PRE :%.*]] = phi i32 [ [[L0]], [[ENTRY:%.*]] ], [ [[L1_PRE1 :%.*]], [[LATCH_HEADER_CRIT_EDGE:%.*]] ]
776776; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[IV_NEXT:%.*]], [[LATCH_HEADER_CRIT_EDGE]] ]
777777; CHECK-NEXT: indirectbr ptr blockaddress(@phi_trans6, [[LATCH:%.*]]), [label %latch]
778778; CHECK: latch:
779779; CHECK-NEXT: [[IV_NEXT]] = add i32 [[IV]], 1
780780; CHECK-NEXT: br i1 [[COND:%.*]], label [[EXIT:%.*]], label [[LATCH_HEADER_CRIT_EDGE]]
781781; CHECK: latch.header_crit_edge:
782782; CHECK-NEXT: [[GEP_1_PHI_TRANS_INSERT_PHI_TRANS_INSERT:%.*]] = getelementptr i32, ptr [[X]], i32 [[IV_NEXT]]
783- ; CHECK-NEXT: [[L1_PRE ]] = load i32, ptr [[GEP_1_PHI_TRANS_INSERT_PHI_TRANS_INSERT]], align 4
783+ ; CHECK-NEXT: [[L1_PRE1 ]] = load i32, ptr [[GEP_1_PHI_TRANS_INSERT_PHI_TRANS_INSERT]], align 4
784784; CHECK-NEXT: br label [[HEADER]]
785785; CHECK: exit:
786- ; CHECK-NEXT: ret i32 [[L1 ]]
786+ ; CHECK-NEXT: ret i32 [[L1_PRE ]]
787787;
788788entry:
789789 %l0 = load i32 , ptr %x
@@ -1057,18 +1057,18 @@ define void @load_load_partial_alias_loop(ptr %P) {
10571057; LE-NEXT: [[TMP0:%.*]] = trunc i32 [[V_1_32]] to i8
10581058; LE-NEXT: br label [[LOOP:%.*]]
10591059; LE: loop:
1060- ; LE-NEXT: [[V_I:%.*]] = phi i8 [ [[TMP0]], [[ENTRY:%.*]] ], [ [[V_I_PRE :%.*]], [[LOOP_LOOP_CRIT_EDGE:%.*]] ]
1060+ ; LE-NEXT: [[V_I:%.*]] = phi i8 [ [[TMP0]], [[ENTRY:%.*]] ], [ [[TMP2 :%.*]], [[LOOP_LOOP_CRIT_EDGE:%.*]] ]
10611061; LE-NEXT: [[I:%.*]] = phi i64 [ 1, [[ENTRY]] ], [ [[I_INC:%.*]], [[LOOP_LOOP_CRIT_EDGE]] ]
10621062; LE-NEXT: [[P_I:%.*]] = getelementptr i8, ptr [[P]], i64 [[I]]
10631063; LE-NEXT: call void @use.i8(i8 [[V_I]])
10641064; LE-NEXT: [[V_I_32:%.*]] = load i32, ptr [[P_I]], align 4
10651065; LE-NEXT: call void @use.i32(i32 [[V_I_32]])
10661066; LE-NEXT: [[I_INC]] = add i64 [[I]], 1
10671067; LE-NEXT: [[CMP:%.*]] = icmp ne i64 [[I_INC]], 64
1068+ ; LE-NEXT: [[TMP1:%.*]] = lshr i32 [[V_I_32]], 8
1069+ ; LE-NEXT: [[TMP2]] = trunc i32 [[TMP1]] to i8
10681070; LE-NEXT: br i1 [[CMP]], label [[LOOP_LOOP_CRIT_EDGE]], label [[EXIT:%.*]]
10691071; LE: loop.loop_crit_edge:
1070- ; LE-NEXT: [[P_I_PHI_TRANS_INSERT:%.*]] = getelementptr i8, ptr [[P]], i64 [[I_INC]]
1071- ; LE-NEXT: [[V_I_PRE]] = load i8, ptr [[P_I_PHI_TRANS_INSERT]], align 1
10721072; LE-NEXT: br label [[LOOP]]
10731073; LE: exit:
10741074; LE-NEXT: ret void
@@ -1084,18 +1084,18 @@ define void @load_load_partial_alias_loop(ptr %P) {
10841084; BE-NEXT: [[TMP1:%.*]] = trunc i32 [[TMP0]] to i8
10851085; BE-NEXT: br label [[LOOP:%.*]]
10861086; BE: loop:
1087- ; BE-NEXT: [[V_I:%.*]] = phi i8 [ [[TMP1]], [[ENTRY:%.*]] ], [ [[V_I_PRE :%.*]], [[LOOP_LOOP_CRIT_EDGE:%.*]] ]
1087+ ; BE-NEXT: [[V_I:%.*]] = phi i8 [ [[TMP1]], [[ENTRY:%.*]] ], [ [[TMP3 :%.*]], [[LOOP_LOOP_CRIT_EDGE:%.*]] ]
10881088; BE-NEXT: [[I:%.*]] = phi i64 [ 1, [[ENTRY]] ], [ [[I_INC:%.*]], [[LOOP_LOOP_CRIT_EDGE]] ]
10891089; BE-NEXT: [[P_I:%.*]] = getelementptr i8, ptr [[P]], i64 [[I]]
10901090; BE-NEXT: call void @use.i8(i8 [[V_I]])
10911091; BE-NEXT: [[V_I_32:%.*]] = load i32, ptr [[P_I]], align 4
10921092; BE-NEXT: call void @use.i32(i32 [[V_I_32]])
10931093; BE-NEXT: [[I_INC]] = add i64 [[I]], 1
10941094; BE-NEXT: [[CMP:%.*]] = icmp ne i64 [[I_INC]], 64
1095+ ; BE-NEXT: [[TMP2:%.*]] = lshr i32 [[V_I_32]], 16
1096+ ; BE-NEXT: [[TMP3]] = trunc i32 [[TMP2]] to i8
10951097; BE-NEXT: br i1 [[CMP]], label [[LOOP_LOOP_CRIT_EDGE]], label [[EXIT:%.*]]
10961098; BE: loop.loop_crit_edge:
1097- ; BE-NEXT: [[P_I_PHI_TRANS_INSERT:%.*]] = getelementptr i8, ptr [[P]], i64 [[I_INC]]
1098- ; BE-NEXT: [[V_I_PRE]] = load i8, ptr [[P_I_PHI_TRANS_INSERT]], align 1
10991099; BE-NEXT: br label [[LOOP]]
11001100; BE: exit:
11011101; BE-NEXT: ret void
0 commit comments