aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp
diff options
context:
space:
mode:
authorSander de Smalen <sander.desmalen@arm.com>2024-04-15 15:07:20 +0100
committerGitHub <noreply@github.com>2024-04-15 15:07:20 +0100
commitc3d58867bd3da85958dbbb46c4a22c0d3c60af66 (patch)
tree7074afca1c5ed09fe9f4792e425504829b33c0a2 /llvm/lib/Analysis/ModuleSummaryAnalysis.cpp
parent32cb3c55080eec70abf282fbe75e6a58cf76f92a (diff)
downloadllvm-c3d58867bd3da85958dbbb46c4a22c0d3c60af66.zip
llvm-c3d58867bd3da85958dbbb46c4a22c0d3c60af66.tar.gz
llvm-c3d58867bd3da85958dbbb46c4a22c0d3c60af66.tar.bz2
[AArch64][SME] Create new pass to remove COALESCER_BARRIER early. (#85386)
The purpose of the COALESCER_BARRIER pseudo node is to prevent the register coalescer from coalescing certain COPY instructions around smstart/smstop instructions, so that we spill only the (required) FPR register rather than the encompassing ZPR register. The pseudos are removed in the AArch64ExpandPseudo pass. However, because the node itself is a _use_ of a register, this occassionally leads to redundant spills/fills, because the register allocator thinks the virtual register is actually used before an smstart/smstop instruction, causing it to be filled, at which points it requires immediate spilling again to ensure it stays live over the smstart/smstop instruction. We can avoid that by removing the pseudo nodes right after coalescing, but before register allocation.
Diffstat (limited to 'llvm/lib/Analysis/ModuleSummaryAnalysis.cpp')
0 files changed, 0 insertions, 0 deletions