Skip to content

Commit a701b7e

Browse files
author
Serguei Katkov
committed
[CGP] Remove dead PHI nodes before elimination of mostly empty blocks
Before elimination of mostly empty block it makes sense to remove dead PHI nodes. It open more opportunity for elimination plus eliminates dead code itself. It appeared that change results in failing many unit tests and some of them I've updated and for another one I disable this optimization. The pattern I observed in the tests is that there is a infinite loop without side effects. As a result after elimination of dead phi node all other related instruction are also removed and tests stops to check what it is expected. Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D158503
1 parent 692344d commit a701b7e

39 files changed

+781
-809
lines changed

llvm/lib/CodeGen/CodeGenPrepare.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,11 @@ static cl::opt<unsigned>
268268
MaxAddressUsersToScan("cgp-max-address-users-to-scan", cl::init(100),
269269
cl::Hidden,
270270
cl::desc("Max number of address users to look at"));
271+
272+
static cl::opt<bool>
273+
DisableDeletePHIs("disable-cgp-delete-phis", cl::Hidden, cl::init(false),
274+
cl::desc("Disable elimination of dead PHI nodes."));
275+
271276
namespace {
272277

273278
enum ExtType {
@@ -878,8 +883,12 @@ bool CodeGenPrepare::eliminateMostlyEmptyBlocks(Function &F) {
878883
// as we remove them.
879884
// Note that this intentionally skips the entry block.
880885
SmallVector<WeakTrackingVH, 16> Blocks;
881-
for (auto &Block : llvm::drop_begin(F))
886+
for (auto &Block : llvm::drop_begin(F)) {
887+
// Delete phi nodes that could block deleting other empty blocks.
888+
if (!DisableDeletePHIs)
889+
MadeChange |= DeleteDeadPHIs(&Block, TLInfo);
882890
Blocks.push_back(&Block);
891+
}
883892

884893
for (auto &Block : Blocks) {
885894
BasicBlock *BB = cast_or_null<BasicBlock>(Block);

llvm/test/CodeGen/AArch64/Atomics/aarch64-cmpxchg-lse2.ll

Lines changed: 75 additions & 75 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/AArch64/Atomics/aarch64-cmpxchg-rcpc.ll

Lines changed: 75 additions & 75 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/AArch64/Atomics/aarch64-cmpxchg-rcpc3.ll

Lines changed: 75 additions & 75 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/AArch64/Atomics/aarch64-cmpxchg-v8a.ll

Lines changed: 75 additions & 75 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/AArch64/Atomics/aarch64_be-cmpxchg-lse2.ll

Lines changed: 75 additions & 75 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/AArch64/Atomics/aarch64_be-cmpxchg-rcpc.ll

Lines changed: 75 additions & 75 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/AArch64/Atomics/aarch64_be-cmpxchg-rcpc3.ll

Lines changed: 75 additions & 75 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/AArch64/Atomics/aarch64_be-cmpxchg-v8a.ll

Lines changed: 75 additions & 75 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-switch-bittest.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2-
; RUN: llc -mtriple aarch64 -aarch64-enable-atomic-cfg-tidy=0 -stop-after=irtranslator -global-isel -verify-machineinstrs %s -o - 2>&1 | FileCheck %s
2+
; RUN: llc -mtriple aarch64 -aarch64-enable-atomic-cfg-tidy=0 -stop-after=irtranslator -global-isel -verify-machineinstrs -disable-cgp-delete-phis %s -o - 2>&1 | FileCheck %s
33

44
define i32 @test_bittest(i16 %p) {
55
; CHECK-LABEL: name: test_bittest

llvm/test/CodeGen/AArch64/machine_cse.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
@d = external global i32
1212
@e = external global i32
1313

14-
define void @combine-sign-comparisons-by-cse(ptr %arg) {
14+
define i32 @combine-sign-comparisons-by-cse(ptr %arg) {
1515
; CHECK: cmp
1616
; CHECK: b.ge
1717
; CHECK-NOT: cmp
@@ -45,7 +45,7 @@ if.end:
4545
return:
4646
%retval.0 = phi i32 [ 0, %if.end ], [ 1, %land.lhs.true3 ], [ 1, %land.lhs.true ]
4747
store i32 %a, ptr %arg
48-
ret void
48+
ret i32 %retval.0
4949
}
5050

5151
define void @combine_vector_zeros(ptr %p, ptr %q) {

llvm/test/CodeGen/Hexagon/autohvx/lower-insert-elt.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc -march=hexagon < %s | FileCheck %s
1+
; RUN: llc -march=hexagon -disable-cgp-delete-phis < %s | FileCheck %s
22
; REQUIRES: asserts
33

44
; Check that this testcase compiles successfully.

llvm/test/CodeGen/Hexagon/postinc-offset.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc -enable-aa-sched-mi -march=hexagon -mcpu=hexagonv5 -rdf-opt=0 \
1+
; RUN: llc -enable-aa-sched-mi -march=hexagon -mcpu=hexagonv5 -rdf-opt=0 -disable-cgp-delete-phis \
22
; RUN: < %s | FileCheck %s
33

44
; CHECK: {

llvm/test/CodeGen/Hexagon/swp-carried-1.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc -march=hexagon -rdf-opt=0 -disable-hexagon-misched -hexagon-initial-cfg-cleanup=0 -lsr-setupcost-depth-limit=1 < %s -pipeliner-experimental-cg=true | FileCheck %s
1+
; RUN: llc -march=hexagon -rdf-opt=0 -disable-hexagon-misched -hexagon-initial-cfg-cleanup=0 -lsr-setupcost-depth-limit=1 -disable-cgp-delete-phis < %s -pipeliner-experimental-cg=true | FileCheck %s
22

33
; Test that we generate the correct code when a loop carried value
44
; is scheduled one stage earlier than it's use. The code in

llvm/test/CodeGen/Hexagon/swp-epilog-phi12.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc -march=hexagon -hexagon-initial-cfg-cleanup=0 -pipeliner-experimental-cg=true < %s | FileCheck %s
1+
; RUN: llc -march=hexagon -hexagon-initial-cfg-cleanup=0 -pipeliner-experimental-cg=true -disable-cgp-delete-phis < %s | FileCheck %s
22

33
; Test epilogue generation when reading loop-carried dependency from a previous
44
; stage. The first epilogue should read value from iteration N-1 of the kernel.

llvm/test/CodeGen/Hexagon/swp-epilog-phi6.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc -march=hexagon -O2 -debug-only=pipeliner -hexagon-initial-cfg-cleanup=0 < %s -o - 2>&1 > /dev/null | FileCheck %s
1+
; RUN: llc -march=hexagon -O2 -debug-only=pipeliner -hexagon-initial-cfg-cleanup=0 -disable-cgp-delete-phis < %s -o - 2>&1 > /dev/null | FileCheck %s
22
; REQUIRES: asserts
33

44
; Test that the phi in the first epilog block is getter the correct

llvm/test/CodeGen/Hexagon/swp-epilog-phi9.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc -march=hexagon -hexagon-initial-cfg-cleanup=0 < %s | FileCheck %s
1+
; RUN: llc -march=hexagon -hexagon-initial-cfg-cleanup=0 -disable-cgp-delete-phis < %s | FileCheck %s
22

33
; Test that we generate the correct Phi name in the last couple of epilog
44
; blocks, when there are 3 epilog blocks. The Phi was scheduled in stage

llvm/test/CodeGen/Hexagon/swp-lots-deps.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc -march=hexagon -enable-pipeliner -stats -o /dev/null < %s 2>&1 -pipeliner-experimental-cg=true | FileCheck %s --check-prefix=STATS
1+
; RUN: llc -march=hexagon -enable-pipeliner -stats -o /dev/null < %s 2>&1 -pipeliner-experimental-cg=true -disable-cgp-delete-phis | FileCheck %s --check-prefix=STATS
22
; REQUIRES: asserts
33

44
; STATS: 1 pipeliner - Number of loops software pipelined

llvm/test/CodeGen/Hexagon/swp-prolog-phi.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc -march=hexagon -rdf-opt=0 < %s -pipeliner-experimental-cg=true | FileCheck %s
1+
; RUN: llc -march=hexagon -rdf-opt=0 < %s -pipeliner-experimental-cg=true -disable-cgp-delete-phis | FileCheck %s
22

33
; Test that we generate the correct name for a value in a prolog block. The
44
; pipeliner was using an incorrect value for an instruction in the 2nd prolog

llvm/test/CodeGen/Hexagon/swp-tfri.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc -march=hexagon -enable-pipeliner -hexagon-initial-cfg-cleanup=0 -stats -o /dev/null < %s 2>&1 -pipeliner-experimental-cg=true | FileCheck %s --check-prefix=STATS
1+
; RUN: llc -march=hexagon -enable-pipeliner -hexagon-initial-cfg-cleanup=0 -stats -o /dev/null < %s 2>&1 -pipeliner-experimental-cg=true -disable-cgp-delete-phis | FileCheck %s --check-prefix=STATS
22
; REQUIRES: asserts
33

44
; Check that we handle the case when a value is first defined in the loop.

llvm/test/CodeGen/Hexagon/v6-unaligned-spill.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc -march=hexagon < %s | FileCheck %s
1+
; RUN: llc -march=hexagon -disable-cgp-delete-phis < %s | FileCheck %s
22

33
; Test that we no longer generate an unaligned vector store for a spill when
44
; a function has an alloca.

llvm/test/CodeGen/PowerPC/sink-side-effect.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: llc -mtriple=powerpc64le -mcpu=pwr9 -verify-machineinstrs < %s | FileCheck %s
2+
; RUN: llc -mtriple=powerpc64le -mcpu=pwr9 -verify-machineinstrs -disable-cgp-delete-phis < %s | FileCheck %s
33

44
define double @zot(ptr %arg, ptr %arg1, ptr %arg2) {
55
; CHECK-LABEL: zot:

llvm/test/CodeGen/PowerPC/sms-iterator.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
; REQUIRES: asserts
22
; RUN: llc < %s -mtriple=powerpc64le-unknown-linux-gnu -verify-machineinstrs\
3-
; RUN: -mcpu=pwr9 --ppc-enable-pipeliner -debug-only=pipeliner 2>&1 \
3+
; RUN: -mcpu=pwr9 --ppc-enable-pipeliner -debug-only=pipeliner -disable-cgp-delete-phis 2>&1 \
44
; RUN: >/dev/null | FileCheck %s
55

66
%0 = type { i32, [16 x double] }

llvm/test/CodeGen/Thumb2/2011-06-07-TwoAddrEarlyClobber.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc -mtriple=thumbv7-apple-darwin10 -arm-atomic-cfg-tidy=0 < %s | FileCheck %s
1+
; RUN: llc -mtriple=thumbv7-apple-darwin10 -arm-atomic-cfg-tidy=0 -disable-cgp-delete-phis < %s | FileCheck %s
22

33
%struct.op = type { ptr, ptr, ptr, i32, i16, i16, i8, i8 }
44

llvm/test/CodeGen/X86/2007-01-13-StackPtrIndex.ll

Lines changed: 63 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -59,32 +59,32 @@ define dso_local void @foo(ptr %a0, ptr %a1, ptr %a2, ptr %a3, ptr %a4, ptr %a5)
5959
; CHECK-NEXT: je .LBB0_10
6060
; CHECK-NEXT: .LBB0_3: # %a29b173
6161
; CHECK-NEXT: # =>This Loop Header: Depth=1
62-
; CHECK-NEXT: # Child Loop BB0_37 Depth 2
62+
; CHECK-NEXT: # Child Loop BB0_36 Depth 2
6363
; CHECK-NEXT: # Child Loop BB0_19 Depth 2
6464
; CHECK-NEXT: # Child Loop BB0_20 Depth 2
65-
; CHECK-NEXT: # Child Loop BB0_21 Depth 3
66-
; CHECK-NEXT: # Child Loop BB0_23 Depth 2
67-
; CHECK-NEXT: # Child Loop BB0_24 Depth 3
68-
; CHECK-NEXT: # Child Loop BB0_26 Depth 2
65+
; CHECK-NEXT: # Child Loop BB0_37 Depth 3
66+
; CHECK-NEXT: # Child Loop BB0_22 Depth 2
67+
; CHECK-NEXT: # Child Loop BB0_23 Depth 3
68+
; CHECK-NEXT: # Child Loop BB0_25 Depth 2
6969
; CHECK-NEXT: # Child Loop BB0_38 Depth 3
70-
; CHECK-NEXT: # Child Loop BB0_29 Depth 3
71-
; CHECK-NEXT: # Child Loop BB0_30 Depth 2
70+
; CHECK-NEXT: # Child Loop BB0_28 Depth 3
71+
; CHECK-NEXT: # Child Loop BB0_29 Depth 2
7272
; CHECK-NEXT: # Child Loop BB0_39 Depth 3
73-
; CHECK-NEXT: # Child Loop BB0_33 Depth 3
74-
; CHECK-NEXT: # Child Loop BB0_34 Depth 2
75-
; CHECK-NEXT: # Child Loop BB0_36 Depth 2
73+
; CHECK-NEXT: # Child Loop BB0_32 Depth 3
74+
; CHECK-NEXT: # Child Loop BB0_33 Depth 2
75+
; CHECK-NEXT: # Child Loop BB0_35 Depth 2
7676
; CHECK-NEXT: testl %eax, %eax
7777
; CHECK-NEXT: js .LBB0_4
7878
; CHECK-NEXT: # %bb.17: # %b179
7979
; CHECK-NEXT: # in Loop: Header=BB0_3 Depth=1
8080
; CHECK-NEXT: testq %rdx, %rdx
8181
; CHECK-NEXT: js .LBB0_18
8282
; CHECK-NEXT: .p2align 4, 0x90
83-
; CHECK-NEXT: .LBB0_37: # %a30b
83+
; CHECK-NEXT: .LBB0_36: # %a30b
8484
; CHECK-NEXT: # Parent Loop BB0_3 Depth=1
8585
; CHECK-NEXT: # => This Inner Loop Header: Depth=2
8686
; CHECK-NEXT: testb %dil, %dil
87-
; CHECK-NEXT: je .LBB0_37
87+
; CHECK-NEXT: je .LBB0_36
8888
; CHECK-NEXT: .LBB0_18: # %b188
8989
; CHECK-NEXT: # in Loop: Header=BB0_3 Depth=1
9090
; CHECK-NEXT: testb %r8b, %r8b
@@ -104,33 +104,33 @@ define dso_local void @foo(ptr %a0, ptr %a1, ptr %a2, ptr %a3, ptr %a4, ptr %a5)
104104
; CHECK-NEXT: # in Loop: Header=BB0_3 Depth=1
105105
; CHECK-NEXT: movl %eax, %r10d
106106
; CHECK-NEXT: orl %esi, %r10d
107-
; CHECK-NEXT: jns .LBB0_26
107+
; CHECK-NEXT: jns .LBB0_25
108108
; CHECK-NEXT: .LBB0_6: # %a57b
109109
; CHECK-NEXT: # in Loop: Header=BB0_3 Depth=1
110110
; CHECK-NEXT: shrl $31, %r9d
111111
; CHECK-NEXT: testb %r9b, %r9b
112-
; CHECK-NEXT: je .LBB0_30
112+
; CHECK-NEXT: je .LBB0_29
113113
; CHECK-NEXT: .LBB0_7: # %a66b
114114
; CHECK-NEXT: # in Loop: Header=BB0_3 Depth=1
115115
; CHECK-NEXT: shrl $31, %r10d
116116
; CHECK-NEXT: testb %r10b, %r10b
117117
; CHECK-NEXT: jne .LBB0_8
118118
; CHECK-NEXT: .p2align 4, 0x90
119-
; CHECK-NEXT: .LBB0_34: # %a74b
119+
; CHECK-NEXT: .LBB0_33: # %a74b
120120
; CHECK-NEXT: # Parent Loop BB0_3 Depth=1
121121
; CHECK-NEXT: # => This Inner Loop Header: Depth=2
122122
; CHECK-NEXT: testb %dil, %dil
123-
; CHECK-NEXT: jne .LBB0_34
124-
; CHECK-NEXT: # %bb.35: # %b1582
125-
; CHECK-NEXT: # in Loop: Header=BB0_34 Depth=2
123+
; CHECK-NEXT: jne .LBB0_33
124+
; CHECK-NEXT: # %bb.34: # %b1582
125+
; CHECK-NEXT: # in Loop: Header=BB0_33 Depth=2
126126
; CHECK-NEXT: testb %dil, %dil
127-
; CHECK-NEXT: jne .LBB0_34
127+
; CHECK-NEXT: jne .LBB0_33
128128
; CHECK-NEXT: .LBB0_8: # %a93b
129129
; CHECK-NEXT: # in Loop: Header=BB0_3 Depth=1
130130
; CHECK-NEXT: testl %eax, %eax
131131
; CHECK-NEXT: js .LBB0_9
132132
; CHECK-NEXT: .p2align 4, 0x90
133-
; CHECK-NEXT: .LBB0_36: # %a97b
133+
; CHECK-NEXT: .LBB0_35: # %a97b
134134
; CHECK-NEXT: # Parent Loop BB0_3 Depth=1
135135
; CHECK-NEXT: # => This Inner Loop Header: Depth=2
136136
; CHECK-NEXT: movss {{.*#+}} xmm1 = mem[0],zero,zero,zero
@@ -141,108 +141,108 @@ define dso_local void @foo(ptr %a0, ptr %a1, ptr %a2, ptr %a3, ptr %a4, ptr %a5)
141141
; CHECK-NEXT: addss %xmm1, %xmm2
142142
; CHECK-NEXT: movss %xmm2, i6000(%rip)
143143
; CHECK-NEXT: testb %dil, %dil
144-
; CHECK-NEXT: jne .LBB0_36
144+
; CHECK-NEXT: jne .LBB0_35
145145
; CHECK-NEXT: jmp .LBB0_9
146146
; CHECK-NEXT: .p2align 4, 0x90
147-
; CHECK-NEXT: .LBB0_22: # %b463
147+
; CHECK-NEXT: .LBB0_21: # %b377
148148
; CHECK-NEXT: # in Loop: Header=BB0_20 Depth=2
149149
; CHECK-NEXT: testb %dil, %dil
150-
; CHECK-NEXT: je .LBB0_23
150+
; CHECK-NEXT: je .LBB0_22
151151
; CHECK-NEXT: .LBB0_20: # %b341
152152
; CHECK-NEXT: # Parent Loop BB0_3 Depth=1
153153
; CHECK-NEXT: # => This Loop Header: Depth=2
154-
; CHECK-NEXT: # Child Loop BB0_21 Depth 3
154+
; CHECK-NEXT: # Child Loop BB0_37 Depth 3
155155
; CHECK-NEXT: testq %rsi, %rsi
156-
; CHECK-NEXT: js .LBB0_22
156+
; CHECK-NEXT: js .LBB0_21
157157
; CHECK-NEXT: .p2align 4, 0x90
158-
; CHECK-NEXT: .LBB0_21: # %a35b
158+
; CHECK-NEXT: .LBB0_37: # %a35b
159159
; CHECK-NEXT: # Parent Loop BB0_3 Depth=1
160160
; CHECK-NEXT: # Parent Loop BB0_20 Depth=2
161161
; CHECK-NEXT: # => This Inner Loop Header: Depth=3
162162
; CHECK-NEXT: testb %dil, %dil
163-
; CHECK-NEXT: je .LBB0_21
164-
; CHECK-NEXT: jmp .LBB0_22
163+
; CHECK-NEXT: je .LBB0_37
164+
; CHECK-NEXT: jmp .LBB0_21
165165
; CHECK-NEXT: .p2align 4, 0x90
166-
; CHECK-NEXT: .LBB0_28: # %b1016
167-
; CHECK-NEXT: # in Loop: Header=BB0_26 Depth=2
166+
; CHECK-NEXT: .LBB0_27: # %b1016
167+
; CHECK-NEXT: # in Loop: Header=BB0_25 Depth=2
168168
; CHECK-NEXT: testq %rsi, %rsi
169169
; CHECK-NEXT: jle .LBB0_6
170-
; CHECK-NEXT: .LBB0_26: # %b858
170+
; CHECK-NEXT: .LBB0_25: # %b858
171171
; CHECK-NEXT: # Parent Loop BB0_3 Depth=1
172172
; CHECK-NEXT: # => This Loop Header: Depth=2
173173
; CHECK-NEXT: # Child Loop BB0_38 Depth 3
174-
; CHECK-NEXT: # Child Loop BB0_29 Depth 3
174+
; CHECK-NEXT: # Child Loop BB0_28 Depth 3
175175
; CHECK-NEXT: testq %rdx, %rdx
176-
; CHECK-NEXT: js .LBB0_27
176+
; CHECK-NEXT: js .LBB0_26
177177
; CHECK-NEXT: .p2align 4, 0x90
178178
; CHECK-NEXT: .LBB0_38: # %a53b
179179
; CHECK-NEXT: # Parent Loop BB0_3 Depth=1
180-
; CHECK-NEXT: # Parent Loop BB0_26 Depth=2
180+
; CHECK-NEXT: # Parent Loop BB0_25 Depth=2
181181
; CHECK-NEXT: # => This Inner Loop Header: Depth=3
182182
; CHECK-NEXT: testb %dil, %dil
183183
; CHECK-NEXT: je .LBB0_38
184-
; CHECK-NEXT: .LBB0_27: # %b879
185-
; CHECK-NEXT: # in Loop: Header=BB0_26 Depth=2
184+
; CHECK-NEXT: .LBB0_26: # %b879
185+
; CHECK-NEXT: # in Loop: Header=BB0_25 Depth=2
186186
; CHECK-NEXT: testb %r8b, %r8b
187-
; CHECK-NEXT: jne .LBB0_28
187+
; CHECK-NEXT: jne .LBB0_27
188188
; CHECK-NEXT: .p2align 4, 0x90
189-
; CHECK-NEXT: .LBB0_29: # %a53b1019
189+
; CHECK-NEXT: .LBB0_28: # %a53b1019
190190
; CHECK-NEXT: # Parent Loop BB0_3 Depth=1
191-
; CHECK-NEXT: # Parent Loop BB0_26 Depth=2
191+
; CHECK-NEXT: # Parent Loop BB0_25 Depth=2
192192
; CHECK-NEXT: # => This Inner Loop Header: Depth=3
193193
; CHECK-NEXT: testq %rdx, %rdx
194-
; CHECK-NEXT: jle .LBB0_29
195-
; CHECK-NEXT: jmp .LBB0_28
194+
; CHECK-NEXT: jle .LBB0_28
195+
; CHECK-NEXT: jmp .LBB0_27
196196
; CHECK-NEXT: .p2align 4, 0x90
197-
; CHECK-NEXT: .LBB0_32: # %b1263
198-
; CHECK-NEXT: # in Loop: Header=BB0_30 Depth=2
197+
; CHECK-NEXT: .LBB0_31: # %b1263
198+
; CHECK-NEXT: # in Loop: Header=BB0_29 Depth=2
199199
; CHECK-NEXT: testq %rdx, %rdx
200200
; CHECK-NEXT: jle .LBB0_7
201-
; CHECK-NEXT: .LBB0_30: # %b1117
201+
; CHECK-NEXT: .LBB0_29: # %b1117
202202
; CHECK-NEXT: # Parent Loop BB0_3 Depth=1
203203
; CHECK-NEXT: # => This Loop Header: Depth=2
204204
; CHECK-NEXT: # Child Loop BB0_39 Depth 3
205-
; CHECK-NEXT: # Child Loop BB0_33 Depth 3
205+
; CHECK-NEXT: # Child Loop BB0_32 Depth 3
206206
; CHECK-NEXT: testq %rsi, %rsi
207-
; CHECK-NEXT: js .LBB0_31
207+
; CHECK-NEXT: js .LBB0_30
208208
; CHECK-NEXT: .p2align 4, 0x90
209209
; CHECK-NEXT: .LBB0_39: # %a63b
210210
; CHECK-NEXT: # Parent Loop BB0_3 Depth=1
211-
; CHECK-NEXT: # Parent Loop BB0_30 Depth=2
211+
; CHECK-NEXT: # Parent Loop BB0_29 Depth=2
212212
; CHECK-NEXT: # => This Inner Loop Header: Depth=3
213213
; CHECK-NEXT: testq %rsi, %rsi
214214
; CHECK-NEXT: jle .LBB0_39
215-
; CHECK-NEXT: .LBB0_31: # %b1139
216-
; CHECK-NEXT: # in Loop: Header=BB0_30 Depth=2
215+
; CHECK-NEXT: .LBB0_30: # %b1139
216+
; CHECK-NEXT: # in Loop: Header=BB0_29 Depth=2
217217
; CHECK-NEXT: testq %rsi, %rsi
218-
; CHECK-NEXT: jle .LBB0_32
218+
; CHECK-NEXT: jle .LBB0_31
219219
; CHECK-NEXT: .p2align 4, 0x90
220-
; CHECK-NEXT: .LBB0_33: # %a63b1266
220+
; CHECK-NEXT: .LBB0_32: # %a63b1266
221221
; CHECK-NEXT: # Parent Loop BB0_3 Depth=1
222-
; CHECK-NEXT: # Parent Loop BB0_30 Depth=2
222+
; CHECK-NEXT: # Parent Loop BB0_29 Depth=2
223223
; CHECK-NEXT: # => This Inner Loop Header: Depth=3
224224
; CHECK-NEXT: testq %rsi, %rsi
225-
; CHECK-NEXT: jle .LBB0_33
226-
; CHECK-NEXT: jmp .LBB0_32
225+
; CHECK-NEXT: jle .LBB0_32
226+
; CHECK-NEXT: jmp .LBB0_31
227227
; CHECK-NEXT: .p2align 4, 0x90
228-
; CHECK-NEXT: .LBB0_25: # %b712
229-
; CHECK-NEXT: # in Loop: Header=BB0_23 Depth=2
228+
; CHECK-NEXT: .LBB0_24: # %b712
229+
; CHECK-NEXT: # in Loop: Header=BB0_22 Depth=2
230230
; CHECK-NEXT: testb %dil, %dil
231231
; CHECK-NEXT: je .LBB0_5
232-
; CHECK-NEXT: .LBB0_23: # %b535
232+
; CHECK-NEXT: .LBB0_22: # %b535
233233
; CHECK-NEXT: # Parent Loop BB0_3 Depth=1
234234
; CHECK-NEXT: # => This Loop Header: Depth=2
235-
; CHECK-NEXT: # Child Loop BB0_24 Depth 3
235+
; CHECK-NEXT: # Child Loop BB0_23 Depth 3
236236
; CHECK-NEXT: testq %rdx, %rdx
237-
; CHECK-NEXT: js .LBB0_25
237+
; CHECK-NEXT: js .LBB0_24
238238
; CHECK-NEXT: .p2align 4, 0x90
239-
; CHECK-NEXT: .LBB0_24: # %a45b
239+
; CHECK-NEXT: .LBB0_23: # %a45b
240240
; CHECK-NEXT: # Parent Loop BB0_3 Depth=1
241-
; CHECK-NEXT: # Parent Loop BB0_23 Depth=2
241+
; CHECK-NEXT: # Parent Loop BB0_22 Depth=2
242242
; CHECK-NEXT: # => This Inner Loop Header: Depth=3
243243
; CHECK-NEXT: testb %dil, %dil
244-
; CHECK-NEXT: je .LBB0_24
245-
; CHECK-NEXT: jmp .LBB0_25
244+
; CHECK-NEXT: je .LBB0_23
245+
; CHECK-NEXT: jmp .LBB0_24
246246
; CHECK-NEXT: .LBB0_10: # %a109b
247247
; CHECK-NEXT: movq %rbp, %rsp
248248
; CHECK-NEXT: popq %rbp

llvm/test/CodeGen/X86/2008-04-28-CoalescerBug.ll

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ define void @t(ptr %depth, ptr %bop, i32 %mode) nounwind {
4646
; CHECK-NEXT: je LBB0_4
4747
; CHECK-NEXT: ## %bb.8: ## %bb13236
4848
; CHECK-NEXT: ## in Loop: Header=BB0_4 Depth=1
49-
; CHECK-NEXT: cmpw $-1, %cx
5049
; CHECK-NEXT: testb %al, %al
5150
; CHECK-NEXT: jne LBB0_4
5251
; CHECK-NEXT: ## %bb.9: ## %bb13572

llvm/test/CodeGen/X86/avx512-i1test.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: llc < %s -mattr=+avx512f | FileCheck %s
3-
; RUN: llc < %s -mattr=+avx512f -mattr=+avx512vl -mattr=+avx512bw -mattr=+avx512dq | FileCheck %s
2+
; RUN: llc < %s -mattr=+avx512f -disable-cgp-delete-phis | FileCheck %s
3+
; RUN: llc < %s -mattr=+avx512f -mattr=+avx512vl -mattr=+avx512bw -mattr=+avx512dq -disable-cgp-delete-phis | FileCheck %s
44

55
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
66
target triple = "x86_64-unknown-linux-gnu"

llvm/test/CodeGen/X86/ins_subreg_coalesce-3.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s
2+
; RUN: llc < %s -mtriple=x86_64-- -disable-cgp-delete-phis | FileCheck %s
33

44
%struct.COMPOSITE = type { i8, i16, i16 }
55
%struct.FILE = type { ptr, i32, i32, i16, i16, %struct.__sbuf, i32, ptr, ptr, ptr, ptr, ptr, %struct.__sbuf, ptr, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }

0 commit comments

Comments
 (0)