aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineFunction.cpp
diff options
context:
space:
mode:
authorShubham Sandeep Rastogi <srastogi22@apple.com>2025-01-27 09:26:22 -0800
committerGitHub <noreply@github.com>2025-01-27 09:26:22 -0800
commit44c9e46fce12badae8cd3f5bd53fe1c2b1248940 (patch)
treeffd5327ab33e9b7cf3bdb3fdddda93b7ba09e1af /llvm/lib/CodeGen/MachineFunction.cpp
parente7de6036983641ccf0fb45afd3eb96ff962525aa (diff)
downloadllvm-44c9e46fce12badae8cd3f5bd53fe1c2b1248940.zip
llvm-44c9e46fce12badae8cd3f5bd53fe1c2b1248940.tar.gz
llvm-44c9e46fce12badae8cd3f5bd53fe1c2b1248940.tar.bz2
[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.
Diffstat (limited to 'llvm/lib/CodeGen/MachineFunction.cpp')
-rw-r--r--llvm/lib/CodeGen/MachineFunction.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/MachineFunction.cpp b/llvm/lib/CodeGen/MachineFunction.cpp
index ab3609b..7d504ef 100644
--- a/llvm/lib/CodeGen/MachineFunction.cpp
+++ b/llvm/lib/CodeGen/MachineFunction.cpp
@@ -1054,7 +1054,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());
@@ -1138,7 +1138,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);
};