From 6d7b40269fe58bc85c704c43c64bfa28e2a06e42 Mon Sep 17 00:00:00 2001 From: Shubham Sandeep Rastogi <srastogi22@apple.com> Date: Mon, 27 Jan 2025 09:26:22 -0800 Subject: [PATCH] [InstrRef] Fix mismatch between LiveDebugValues and salvageCopySSA (#124233) The LiveDebugValues pass and the instruction selector (which calls salvageCopySSA) need to be consistent on what they consider a copy instruction. With https://github.com/llvm/llvm-project/pull/75184, the definition of what a copy instruction is was narrowed for AArch64 to exclude a w->x ORR and treat it as a zero-extend rather than a copy However, to make sure LiveDebugValues still treats a w->x ORR as a copy, the new function, isCopyLikeInstr was created. We need to make sure that salvageCopySSA also calls that function. This patch addresses this mismatch. (cherry picked from commit 44c9e46fce12badae8cd3f5bd53fe1c2b1248940) --- llvm/lib/CodeGen/MachineFunction.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/lib/CodeGen/MachineFunction.cpp b/llvm/lib/CodeGen/MachineFunction.cpp index 437df26ef06fd..29c03eab95ebf 100644 --- a/llvm/lib/CodeGen/MachineFunction.cpp +++ b/llvm/lib/CodeGen/MachineFunction.cpp @@ -1066,7 +1066,7 @@ auto MachineFunction::salvageCopySSA( // Check whether this copy-like instruction has already been salvaged into // an operand pair. Register Dest; - if (auto CopyDstSrc = TII.isCopyInstr(MI)) { + if (auto CopyDstSrc = TII.isCopyLikeInstr(MI)) { Dest = CopyDstSrc->Destination->getReg(); } else { assert(MI.isSubregToReg()); @@ -1150,7 +1150,7 @@ auto MachineFunction::salvageCopySSAImpl(MachineInstr &MI) CurInst = Inst.getIterator(); // Any non-copy instruction is the defining instruction we're seeking. - if (!Inst.isCopyLike() && !TII.isCopyInstr(Inst)) + if (!Inst.isCopyLike() && !TII.isCopyLikeInstr(Inst)) break; State = GetRegAndSubreg(Inst); };