mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-27 06:54:30 +00:00
trim down the target info structs now that we have a preferred spill register class for each callee save register
llvm-svn: 23560
This commit is contained in:
parent
3fcb5aa250
commit
6124aae803
@ -36,8 +36,6 @@ class TargetRegisterClass;
|
||||
struct MRegisterDesc {
|
||||
const char *Name; // Assembly language name for the register
|
||||
const unsigned *AliasSet; // Register Alias Set, described above
|
||||
unsigned char SpillSize; // Size of this register in bytes
|
||||
unsigned char SpillAlignment; // Alignment of stack slot for this reg
|
||||
};
|
||||
|
||||
class TargetRegisterClass {
|
||||
@ -189,18 +187,6 @@ public:
|
||||
return get(RegNo).Name;
|
||||
}
|
||||
|
||||
/// getSpillSize - Return the size in bits required of a stack slot used to
|
||||
/// spill register into.
|
||||
unsigned getSpillSize(unsigned RegNo) const {
|
||||
return get(RegNo).SpillSize;
|
||||
}
|
||||
|
||||
/// getSpillAlignment - Return the alignment required by a stack slot used to
|
||||
/// spill register into.
|
||||
unsigned getSpillAlignment(unsigned RegNo) const {
|
||||
return get(RegNo).SpillAlignment;
|
||||
}
|
||||
|
||||
/// getNumRegs - Return the number of registers this target has
|
||||
/// (useful for sizing arrays holding per register information)
|
||||
unsigned getNumRegs() const {
|
||||
|
@ -214,24 +214,9 @@ void RegisterInfoEmitter::run(std::ostream &OS) {
|
||||
OS << Reg.getName();
|
||||
OS << "\",\t";
|
||||
if (RegisterAliases.count(Reg.TheDef))
|
||||
OS << Reg.getName() << "_AliasSet,\t";
|
||||
OS << Reg.getName() << "_AliasSet },\n";
|
||||
else
|
||||
OS << "Empty_AliasSet,\t";
|
||||
|
||||
// Figure out what the size and alignment of the spill slots are for this
|
||||
// reg. This may be explicitly declared in the register, or it may be
|
||||
// inferred from the register classes it is part of.
|
||||
std::multimap<Record*, const CodeGenRegisterClass*>::iterator I, E;
|
||||
tie(I, E) = RegClassesBelongedTo.equal_range(Reg.TheDef);
|
||||
unsigned SpillSize = Reg.DeclaredSpillSize;
|
||||
unsigned SpillAlign = Reg.DeclaredSpillAlignment;
|
||||
for (; I != E; ++I) { // For each reg class this belongs to.
|
||||
const CodeGenRegisterClass *RC = I->second;
|
||||
SpillSize = std::max(SpillSize, RC->SpillSize);
|
||||
SpillAlign = std::max(SpillAlign, RC->SpillAlignment);
|
||||
}
|
||||
|
||||
OS << SpillSize << ", " << SpillAlign << " },\n";
|
||||
OS << "Empty_AliasSet },\n";
|
||||
}
|
||||
OS << " };\n"; // End of register descriptors...
|
||||
OS << "}\n\n"; // End of anonymous namespace...
|
||||
|
Loading…
x
Reference in New Issue
Block a user