[llvm] [MachineCP] Correctly handle register masks and sub-registers (PR #122472)

Oliver Stannard via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 13 07:48:34 PST 2025


================
@@ -960,6 +984,10 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) {
     // a large set of registers.  Treat clobbered registers the same way as
     // defined registers.
     if (RegMask) {
+      // Invalidate all entries in the copy map which are not preserved by this
+      // register mask.
+      Tracker.clobberRegistersExceptMask(RegMask, *TRI, *TII, UseCopyInstr);
+
----------------
ostannard wrote:

A RegMask is a set of registers (not register units) which are preserved, and I can't see any way to convert that to a set of register units which are clobbered faster than building the full set of preserved/clobbered register units, which is what the first version of this did.

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


More information about the llvm-commits mailing list