[clang] [llvm] [clang-tools-extra] [MCP] Enhance MCP copy Instruction removal for special case (PR #70778)

via cfe-commits cfe-commits at lists.llvm.org
Wed Nov 15 03:00:11 PST 2023


================
@@ -784,18 +813,33 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) {
         // %xmm2 = copy %xmm0
         // ...
         // %xmm2 = copy %xmm9
-        Tracker.clobberRegister(Def, *TRI, *TII, UseCopyInstr);
+
+        // While we do need to clobber the register here, simply clobbering it
+        // is not sufficient. We also need to remove the COPY record pair for
+        // 'Def' in the tracker. Failing to do so might cause the target to miss
+        // some opportunities to eliminate redundant copy instructions.
+
+        // Consider the following sequence:
+        // L1: r0 = COPY r9     <- TrackMI
+        // L2: r0 = COPY r8     <- TrackMI
+        // L3: use r0           <- Remove L2 from MaybeDeadCopies
+        // L4: early-clobber r9 <- Invalid L2 from Tracker
+        // L5: r0 = COPY r8     <- Miss remove chance
+        // L6: use r0           <- Miss remove L5 chance
----------------
qcolombet wrote:

Rewrite this comment to explain what will happen now.
Not what was happening before this patch.

https://github.com/llvm/llvm-project/pull/70778


More information about the cfe-commits mailing list