[llvm] r317884 - [AMDGPU] Prevent Machine Copy Propagation from replacing live copy with the dead one
Alexander Timofeev via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 10 04:21:10 PST 2017
Author: alex-t
Date: Fri Nov 10 04:21:10 2017
New Revision: 317884
URL: http://llvm.org/viewvc/llvm-project?rev=317884&view=rev
Log:
[AMDGPU] Prevent Machine Copy Propagation from replacing live copy with the dead one
Differential revision: https://reviews.llvm.org/D38754
Added:
llvm/trunk/test/CodeGen/AMDGPU/dead_copy.mir
Modified:
llvm/trunk/lib/CodeGen/MachineCopyPropagation.cpp
Modified: llvm/trunk/lib/CodeGen/MachineCopyPropagation.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineCopyPropagation.cpp?rev=317884&r1=317883&r2=317884&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/MachineCopyPropagation.cpp (original)
+++ llvm/trunk/lib/CodeGen/MachineCopyPropagation.cpp Fri Nov 10 04:21:10 2017
@@ -187,6 +187,8 @@ bool MachineCopyPropagation::eraseIfRedu
// Check that the existing copy uses the correct sub registers.
MachineInstr &PrevCopy = *CI->second;
+ if (PrevCopy.getOperand(0).isDead())
+ return false;
if (!isNopCopy(PrevCopy, Src, Def, TRI))
return false;
Added: llvm/trunk/test/CodeGen/AMDGPU/dead_copy.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/dead_copy.mir?rev=317884&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/AMDGPU/dead_copy.mir (added)
+++ llvm/trunk/test/CodeGen/AMDGPU/dead_copy.mir Fri Nov 10 04:21:10 2017
@@ -0,0 +1,27 @@
+# RUN: llc -o - %s -march=amdgcn -mcpu=fiji -run-pass=machine-cp -verify-machineinstrs | FileCheck -check-prefix=GCN %s
+
+# GCN-LABEL: dead_copy
+# GCN: bb.0
+# GCN-NOT: dead %vgpr5 = COPY undef %vgpr11, implicit %exec
+# GCN: %vgpr5 = COPY %vgpr11, implicit %exec
+
+---
+name: dead_copy
+
+body: |
+
+ bb.0:
+ liveins: %vgpr11, %sgpr0, %sgpr1, %vgpr6, %vgpr7, %vgpr4
+
+ dead %vgpr5 = COPY undef %vgpr11, implicit %exec
+
+ %vgpr5 = COPY %vgpr11, implicit %exec
+
+ %sgpr14 = S_ADD_U32 %sgpr0, target-flags(amdgpu-gotprel) 1136, implicit-def %scc
+ %sgpr15 = S_ADDC_U32 %sgpr1, target-flags(amdgpu-gotprel32-lo) 0, implicit-def dead %scc, implicit %scc
+
+ %vgpr10 = COPY killed %sgpr14, implicit %exec
+ %vgpr11 = COPY killed %sgpr15, implicit %exec
+
+ FLAT_STORE_DWORDX4 %vgpr10_vgpr11, %vgpr4_vgpr5_vgpr6_vgpr7, 0, 0, 0, implicit %exec, implicit %flat_scr
+...
More information about the llvm-commits
mailing list