Skip to content

Commit 5273e04

Browse files
committed
Revert "[PHIElimination] Verify reappropriated COPY is of similar register class, update livevars. (#146337)"
This reverts commit 01a6c08.
1 parent a068ed2 commit 5273e04

File tree

3 files changed

+23
-101
lines changed

3 files changed

+23
-101
lines changed

llvm/lib/CodeGen/PHIElimination.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -584,13 +584,9 @@ void PHIEliminationImpl::LowerPHINode(MachineBasicBlock &MBB,
584584
// Reuse an existing copy in the block if possible.
585585
if (IncomingReg.isVirtual()) {
586586
MachineInstr *DefMI = MRI->getUniqueVRegDef(SrcReg);
587-
const TargetRegisterClass *SrcRC = MRI->getRegClass(SrcReg);
588-
const TargetRegisterClass *IncomingRC = MRI->getRegClass(IncomingReg);
589587
if (DefMI && DefMI->isCopy() && DefMI->getParent() == &opBlock &&
590-
MRI->use_empty(SrcReg) && IncomingRC->hasSuperClassEq(SrcRC)) {
588+
MRI->use_empty(SrcReg)) {
591589
DefMI->getOperand(0).setReg(IncomingReg);
592-
if (LV)
593-
LV->getVarInfo(SrcReg).AliveBlocks.clear();
594590
continue;
595591
}
596592
}
Lines changed: 14 additions & 88 deletions
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 UTC_ARGS: --version 5
2-
# RUN: llc -run-pass=livevars,phi-node-elimination -verify-machineinstrs -mtriple=aarch64-linux-gnu -o - %s | FileCheck %s
2+
# RUN: llc -run-pass=phi-node-elimination -mtriple=aarch64-linux-gnu -o - %s | FileCheck %s
33

44
# Verify that the original COPY in bb.1 is reappropriated as the PHI source in bb.2,
55
# instead of creating a new COPY with the same source register.
@@ -13,18 +13,18 @@ body: |
1313
; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
1414
; CHECK-NEXT: liveins: $nzcv, $w0
1515
; CHECK-NEXT: {{ $}}
16-
; CHECK-NEXT: %a:gpr32 = COPY killed $w0
16+
; CHECK-NEXT: %a:gpr32 = COPY $w0
1717
; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = IMPLICIT_DEF
18-
; CHECK-NEXT: Bcc 8, %bb.2, implicit killed $nzcv
18+
; CHECK-NEXT: Bcc 8, %bb.2, implicit $nzcv
1919
; CHECK-NEXT: {{ $}}
2020
; CHECK-NEXT: bb.1:
2121
; CHECK-NEXT: successors: %bb.2(0x80000000)
2222
; CHECK-NEXT: {{ $}}
23-
; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = COPY killed %a
23+
; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = COPY %a
2424
; CHECK-NEXT: {{ $}}
2525
; CHECK-NEXT: bb.2:
26-
; CHECK-NEXT: %c:gpr32 = COPY killed [[DEF]]
27-
; CHECK-NEXT: dead %d:gpr32 = COPY killed %c
26+
; CHECK-NEXT: %c:gpr32 = COPY [[DEF]]
27+
; CHECK-NEXT: %d:gpr32 = COPY %c
2828
bb.0:
2929
liveins: $nzcv, $w0
3030
%a:gpr32 = COPY $w0
@@ -46,16 +46,16 @@ body: |
4646
; CHECK-NEXT: liveins: $nzcv, $w0
4747
; CHECK-NEXT: {{ $}}
4848
; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = IMPLICIT_DEF
49-
; CHECK-NEXT: Bcc 8, %bb.2, implicit killed $nzcv
49+
; CHECK-NEXT: Bcc 8, %bb.2, implicit $nzcv
5050
; CHECK-NEXT: {{ $}}
5151
; CHECK-NEXT: bb.1:
5252
; CHECK-NEXT: successors: %bb.2(0x80000000)
5353
; CHECK-NEXT: {{ $}}
54-
; CHECK-NEXT: dead $x0 = IMPLICIT_DEF implicit-def $w0
55-
; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = COPY killed $w0
54+
; CHECK-NEXT: $x0 = IMPLICIT_DEF
55+
; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = COPY $w0
5656
; CHECK-NEXT: {{ $}}
5757
; CHECK-NEXT: bb.2:
58-
; CHECK-NEXT: dead %b:gpr32 = COPY killed [[DEF]]
58+
; CHECK-NEXT: %b:gpr32 = COPY [[DEF]]
5959
bb.0:
6060
liveins: $nzcv, $w0
6161
Bcc 8, %bb.2, implicit $nzcv
@@ -83,15 +83,15 @@ body: |
8383
; CHECK-NEXT: bb.1:
8484
; CHECK-NEXT: successors: %bb.2(0x80000000)
8585
; CHECK-NEXT: {{ $}}
86-
; CHECK-NEXT: dead [[DEF:%[0-9]+]]:gpr64 = IMPLICIT_DEF
87-
; CHECK-NEXT: dead [[DEF1:%[0-9]+]]:gpr64 = IMPLICIT_DEF
86+
; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr64 = IMPLICIT_DEF
87+
; CHECK-NEXT: [[DEF1:%[0-9]+]]:gpr64 = IMPLICIT_DEF
8888
; CHECK-NEXT: B %bb.2
8989
; CHECK-NEXT: {{ $}}
9090
; CHECK-NEXT: bb.2:
9191
; CHECK-NEXT: successors: %bb.1(0x80000000)
9292
; CHECK-NEXT: {{ $}}
93-
; CHECK-NEXT: dead [[DEF2:%[0-9]+]]:gpr64 = IMPLICIT_DEF
94-
; CHECK-NEXT: dead [[DEF3:%[0-9]+]]:gpr64 = IMPLICIT_DEF
93+
; CHECK-NEXT: [[DEF2:%[0-9]+]]:gpr64 = IMPLICIT_DEF
94+
; CHECK-NEXT: [[DEF3:%[0-9]+]]:gpr64 = IMPLICIT_DEF
9595
; CHECK-NEXT: B %bb.1
9696
bb.0:
9797
liveins: $wzr, $xzr
@@ -117,77 +117,3 @@ body: |
117117
118118
...
119119

120-
---
121-
name: update_livevars
122-
tracksRegLiveness: true
123-
body: |
124-
; CHECK-LABEL: name: update_livevars
125-
; CHECK: bb.0:
126-
; CHECK-NEXT: successors: %bb.1(0x80000000)
127-
; CHECK-NEXT: liveins: $w0, $w1, $nzcv
128-
; CHECK-NEXT: {{ $}}
129-
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY killed $w0
130-
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY killed $w1
131-
; CHECK-NEXT: B %bb.1
132-
; CHECK-NEXT: {{ $}}
133-
; CHECK-NEXT: bb.1:
134-
; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
135-
; CHECK-NEXT: liveins: $nzcv
136-
; CHECK-NEXT: {{ $}}
137-
; CHECK-NEXT: dead [[COPY2:%[0-9]+]]:gpr32 = COPY killed [[COPY1]]
138-
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]]
139-
; CHECK-NEXT: Bcc 1, %bb.1, implicit $nzcv
140-
; CHECK-NEXT: {{ $}}
141-
; CHECK-NEXT: bb.2:
142-
; CHECK-NEXT: successors: %bb.1(0x80000000)
143-
; CHECK-NEXT: liveins: $nzcv
144-
; CHECK-NEXT: {{ $}}
145-
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = IMPLICIT_DEF
146-
; CHECK-NEXT: B %bb.1
147-
bb.0:
148-
successors: %bb.1
149-
liveins: $w0, $w1, $nzcv
150-
151-
%0:gpr32 = COPY killed $w0
152-
%1:gpr32 = COPY killed $w1
153-
B %bb.1
154-
155-
bb.1:
156-
successors: %bb.2, %bb.1
157-
liveins: $nzcv
158-
159-
%2:gpr32 = PHI %3, %bb.2, %1, %bb.0, %3, %bb.1
160-
%3:gpr32 = COPY %0
161-
Bcc 1, %bb.1, implicit $nzcv
162-
163-
bb.2:
164-
successors: %bb.1
165-
liveins: $nzcv
166-
167-
B %bb.1
168-
...
169-
170-
---
171-
name: copy_subreg
172-
tracksRegLiveness: true
173-
body: |
174-
; CHECK-LABEL: name: copy_subreg
175-
; CHECK: bb.0:
176-
; CHECK-NEXT: successors: %bb.1(0x80000000)
177-
; CHECK-NEXT: liveins: $x0
178-
; CHECK-NEXT: {{ $}}
179-
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY killed $x0
180-
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY killed [[COPY]]
181-
; CHECK-NEXT: {{ $}}
182-
; CHECK-NEXT: bb.1:
183-
; CHECK-NEXT: dead [[COPY2:%[0-9]+]]:gpr32 = COPY killed [[COPY1]].sub_32
184-
bb.0:
185-
successors: %bb.1
186-
liveins: $x0
187-
188-
%0:gpr64 = COPY killed $x0
189-
%1:gpr64 = COPY killed %0
190-
191-
bb.1:
192-
%2:gpr32 = PHI %1.sub_32, %bb.0
193-
...

llvm/test/CodeGen/AArch64/tbl-loops.ll

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,18 @@ define void @loop1(ptr noalias nocapture noundef writeonly %dst, ptr nocapture n
1717
; CHECK-NEXT: .LBB0_3: // %vector.ph
1818
; CHECK-NEXT: add x11, x8, #1
1919
; CHECK-NEXT: mov w8, #1132396544 // =0x437f0000
20-
; CHECK-NEXT: add x12, x0, #4
20+
; CHECK-NEXT: add x13, x0, #4
2121
; CHECK-NEXT: and x10, x11, #0x1fffffff8
2222
; CHECK-NEXT: dup v0.4s, w8
23-
; CHECK-NEXT: add x13, x1, #16
23+
; CHECK-NEXT: add x14, x1, #16
2424
; CHECK-NEXT: add x8, x1, x10, lsl #2
25+
; CHECK-NEXT: mov x12, x10
2526
; CHECK-NEXT: add x9, x0, x10
26-
; CHECK-NEXT: mov x14, x10
2727
; CHECK-NEXT: .LBB0_4: // %vector.body
2828
; CHECK-NEXT: // =>This Inner Loop Header: Depth=1
29-
; CHECK-NEXT: ldp q1, q2, [x13, #-16]
30-
; CHECK-NEXT: subs x14, x14, #8
31-
; CHECK-NEXT: add x13, x13, #32
29+
; CHECK-NEXT: ldp q1, q2, [x14, #-16]
30+
; CHECK-NEXT: subs x12, x12, #8
31+
; CHECK-NEXT: add x14, x14, #32
3232
; CHECK-NEXT: fcmgt v3.4s, v1.4s, v0.4s
3333
; CHECK-NEXT: fcmgt v4.4s, v2.4s, v0.4s
3434
; CHECK-NEXT: bsl v3.16b, v0.16b, v1.16b
@@ -44,8 +44,8 @@ define void @loop1(ptr noalias nocapture noundef writeonly %dst, ptr nocapture n
4444
; CHECK-NEXT: uzp1 v1.8b, v1.8b, v0.8b
4545
; CHECK-NEXT: uzp1 v2.8b, v2.8b, v0.8b
4646
; CHECK-NEXT: mov v1.s[1], v2.s[0]
47-
; CHECK-NEXT: stur d1, [x12, #-4]
48-
; CHECK-NEXT: add x12, x12, #8
47+
; CHECK-NEXT: stur d1, [x13, #-4]
48+
; CHECK-NEXT: add x13, x13, #8
4949
; CHECK-NEXT: b.ne .LBB0_4
5050
; CHECK-NEXT: // %bb.5: // %middle.block
5151
; CHECK-NEXT: cmp x11, x10

0 commit comments

Comments
 (0)