mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-12 07:37:34 +00:00
Mark the x86 fp stack registers as "reserved". This tells LiveVariables
and the RegisterScavenger not to expect traditional liveness techniques are applicable to these registers, since we don't fully modify the effects of push and pop after stackification. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61179 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
12b882cf53
commit
a32b7ac86f
@ -263,16 +263,30 @@ X86RegisterInfo::getCalleeSavedRegClasses(const MachineFunction *MF) const {
|
||||
|
||||
BitVector X86RegisterInfo::getReservedRegs(const MachineFunction &MF) const {
|
||||
BitVector Reserved(getNumRegs());
|
||||
// Set the stack-pointer register and its aliases as reserved.
|
||||
Reserved.set(X86::RSP);
|
||||
Reserved.set(X86::ESP);
|
||||
Reserved.set(X86::SP);
|
||||
Reserved.set(X86::SPL);
|
||||
// Set the frame-pointer register and its aliases as reserved if needed.
|
||||
if (hasFP(MF)) {
|
||||
Reserved.set(X86::RBP);
|
||||
Reserved.set(X86::EBP);
|
||||
Reserved.set(X86::BP);
|
||||
Reserved.set(X86::BPL);
|
||||
}
|
||||
// Mark the x87 stack registers as reserved, since they don't
|
||||
// behave normally with respect to liveness. We don't fully
|
||||
// model the effects of x87 stack pushes and pops after
|
||||
// stackification.
|
||||
Reserved.set(X86::ST0);
|
||||
Reserved.set(X86::ST1);
|
||||
Reserved.set(X86::ST2);
|
||||
Reserved.set(X86::ST3);
|
||||
Reserved.set(X86::ST4);
|
||||
Reserved.set(X86::ST5);
|
||||
Reserved.set(X86::ST6);
|
||||
Reserved.set(X86::ST7);
|
||||
return Reserved;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user