forked from OSchip/llvm-project
[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
This commit is contained in:
parent
322e13b91a
commit
b5d6ad20e1
|
@ -576,6 +576,7 @@ void MachineCopyPropagation::forwardUses(MachineInstr &MI) {
|
|||
MOUse.setReg(CopySrcReg);
|
||||
if (!CopySrc.isRenamable())
|
||||
MOUse.setIsRenamable(false);
|
||||
MOUse.setIsUndef(CopySrc.isUndef());
|
||||
|
||||
LLVM_DEBUG(dbgs() << "MCP: After replacement: " << MI << "\n");
|
||||
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -o - %s -march=amdgcn -mcpu=gfx1010 -run-pass=machine-cp -verify-machineinstrs | FileCheck %s
|
||||
|
||||
---
|
||||
name: undef_copy_propagation
|
||||
tracksRegLiveness: true
|
||||
body: |
|
||||
bb.0:
|
||||
|
||||
; CHECK-LABEL: name: undef_copy_propagation
|
||||
; CHECK: renamable $vgpr0 = COPY undef renamable $sgpr42, implicit $exec
|
||||
; CHECK-NEXT: renamable $vgpr1 = COPY undef $sgpr42
|
||||
; CHECK-NEXT: renamable $vgpr2 = COPY undef $sgpr42
|
||||
; CHECK-NEXT: renamable $vgpr3 = COPY undef $sgpr42
|
||||
; CHECK-NEXT: EXP_DONE 0, killed $vgpr0, killed $vgpr1, killed $vgpr2, killed $vgpr3, -1, -1, 15, implicit $exec
|
||||
renamable $vgpr0 = COPY undef renamable $sgpr42, implicit $exec
|
||||
renamable $vgpr1 = COPY renamable $vgpr0
|
||||
renamable $vgpr2 = COPY renamable $vgpr0
|
||||
renamable $vgpr3 = COPY renamable $vgpr0
|
||||
|
||||
EXP_DONE 0, killed $vgpr0, killed $vgpr1, killed $vgpr2, killed $vgpr3, -1, -1, 15, implicit $exec
|
||||
...
|
Loading…
Reference in New Issue