mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-21 06:30:16 +00:00
Give targets a chance to expand even standard pseudos.
Allow targets to expand COPY and other standard pseudo-instructions before they are expanded with copyPhysReg(). This allows the target to examine the COPY instruction for extra operands indicating it can be widened to a preferable super-register copy. See the ARM -widen-vmovs option. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141578 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6b50bc9d88
commit
735fe0f9d0
@ -205,6 +205,18 @@ bool ExpandPostRA::runOnMachineFunction(MachineFunction &MF) {
|
|||||||
MachineInstr *MI = mi;
|
MachineInstr *MI = mi;
|
||||||
// Advance iterator here because MI may be erased.
|
// Advance iterator here because MI may be erased.
|
||||||
++mi;
|
++mi;
|
||||||
|
|
||||||
|
// Only expand pseudos.
|
||||||
|
if (!MI->getDesc().isPseudo())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Give targets a chance to expand even standard pseudos.
|
||||||
|
if (TII->expandPostRAPseudo(MI)) {
|
||||||
|
MadeChange = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Expand standard pseudos.
|
||||||
switch (MI->getOpcode()) {
|
switch (MI->getOpcode()) {
|
||||||
case TargetOpcode::SUBREG_TO_REG:
|
case TargetOpcode::SUBREG_TO_REG:
|
||||||
MadeChange |= LowerSubregToReg(MI);
|
MadeChange |= LowerSubregToReg(MI);
|
||||||
@ -217,10 +229,6 @@ bool ExpandPostRA::runOnMachineFunction(MachineFunction &MF) {
|
|||||||
case TargetOpcode::INSERT_SUBREG:
|
case TargetOpcode::INSERT_SUBREG:
|
||||||
case TargetOpcode::EXTRACT_SUBREG:
|
case TargetOpcode::EXTRACT_SUBREG:
|
||||||
llvm_unreachable("Sub-register pseudos should have been eliminated.");
|
llvm_unreachable("Sub-register pseudos should have been eliminated.");
|
||||||
default:
|
|
||||||
if (MI->getDesc().isPseudo())
|
|
||||||
MadeChange |= TII->expandPostRAPseudo(MI);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user