[all-commits] [llvm/llvm-project] 9e436c: [MachineCP] Correctly handle register masks and su...
Oliver Stannard via All-commits
all-commits at lists.llvm.org
Thu Jan 16 01:39:49 PST 2025
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 9e436c2daa446da05e9219f0e6a22f932ba8e3cb
https://github.com/llvm/llvm-project/commit/9e436c2daa446da05e9219f0e6a22f932ba8e3cb
Author: Oliver Stannard <oliver.stannard at arm.com>
Date: 2025-01-16 (Thu, 16 Jan 2025)
Changed paths:
M llvm/lib/CodeGen/MachineCopyPropagation.cpp
M llvm/test/CodeGen/AArch64/machine-cp-sub-reg.mir
Log Message:
-----------
[MachineCP] Correctly handle register masks and sub-registers (#122734)
When passing an instruction with a register mask, the machine copy
propagation pass was dropping the information about some copy
instructions which define a register which is preserved by the mask,
because that register overlaps a register which is partially clobbered
by it. This resulted in a miscompilation for AArch64, because this
caused a live copy to be considered dead.
The fix is to clobber register masks by finding the set of reg units
which is preserved by the mask, and clobbering all units not in that
set.
This is based on #122472, and fixes the compile time performance
regressions which were caused by that.
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list