Skip to content

Commit b5d6ad2

Browse files
committed
[MachineCopyPropagation] Handle propagation of undef copies
When propagating undefined copies the undef flag must also be propagated. Reviewed By: foad Differential Revision: https://reviews.llvm.org/D111219
1 parent 322e13b commit b5d6ad2

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

llvm/lib/CodeGen/MachineCopyPropagation.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,7 @@ void MachineCopyPropagation::forwardUses(MachineInstr &MI) {
576576
MOUse.setReg(CopySrcReg);
577577
if (!CopySrc.isRenamable())
578578
MOUse.setIsRenamable(false);
579+
MOUse.setIsUndef(CopySrc.isUndef());
579580

580581
LLVM_DEBUG(dbgs() << "MCP: After replacement: " << MI << "\n");
581582

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2+
# RUN: llc -o - %s -march=amdgcn -mcpu=gfx1010 -run-pass=machine-cp -verify-machineinstrs | FileCheck %s
3+
4+
---
5+
name: undef_copy_propagation
6+
tracksRegLiveness: true
7+
body: |
8+
bb.0:
9+
10+
; CHECK-LABEL: name: undef_copy_propagation
11+
; CHECK: renamable $vgpr0 = COPY undef renamable $sgpr42, implicit $exec
12+
; CHECK-NEXT: renamable $vgpr1 = COPY undef $sgpr42
13+
; CHECK-NEXT: renamable $vgpr2 = COPY undef $sgpr42
14+
; CHECK-NEXT: renamable $vgpr3 = COPY undef $sgpr42
15+
; CHECK-NEXT: EXP_DONE 0, killed $vgpr0, killed $vgpr1, killed $vgpr2, killed $vgpr3, -1, -1, 15, implicit $exec
16+
renamable $vgpr0 = COPY undef renamable $sgpr42, implicit $exec
17+
renamable $vgpr1 = COPY renamable $vgpr0
18+
renamable $vgpr2 = COPY renamable $vgpr0
19+
renamable $vgpr3 = COPY renamable $vgpr0
20+
21+
EXP_DONE 0, killed $vgpr0, killed $vgpr1, killed $vgpr2, killed $vgpr3, -1, -1, 15, implicit $exec
22+
...

0 commit comments

Comments
 (0)