mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-13 04:38:24 +00:00
Move register class name strings to a single array in MCRegisterInfo to reduce static table size and number of relocation entries.
Indices into the table are stored in each MCRegisterClass instead of a pointer. A new method, getRegClassName, is added to MCRegisterInfo and TargetRegisterInfo to lookup the string in the table. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222118 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -1607,18 +1607,17 @@ void MachineInstr::print(raw_ostream &OS, const TargetMachine *TM,
|
||||
// call instructions much less noisy on targets where calls clobber lots
|
||||
// of registers. Don't rely on MO.isDead() because we may be called before
|
||||
// LiveVariables is run, or we may be looking at a non-allocatable reg.
|
||||
if (MF && isCall() &&
|
||||
if (MRI && isCall() &&
|
||||
MO.isReg() && MO.isImplicit() && MO.isDef()) {
|
||||
unsigned Reg = MO.getReg();
|
||||
if (TargetRegisterInfo::isPhysicalRegister(Reg)) {
|
||||
const MachineRegisterInfo &MRI = MF->getRegInfo();
|
||||
if (MRI.use_empty(Reg)) {
|
||||
if (MRI->use_empty(Reg)) {
|
||||
bool HasAliasLive = false;
|
||||
for (MCRegAliasIterator AI(
|
||||
Reg, TM->getSubtargetImpl()->getRegisterInfo(), true);
|
||||
AI.isValid(); ++AI) {
|
||||
unsigned AliasReg = *AI;
|
||||
if (!MRI.use_empty(AliasReg)) {
|
||||
if (!MRI->use_empty(AliasReg)) {
|
||||
HasAliasLive = true;
|
||||
break;
|
||||
}
|
||||
@ -1669,13 +1668,12 @@ void MachineInstr::print(raw_ostream &OS, const TargetMachine *TM,
|
||||
|
||||
unsigned RCID = 0;
|
||||
if (InlineAsm::hasRegClassConstraint(Flag, RCID)) {
|
||||
if (TM)
|
||||
if (TM) {
|
||||
const TargetRegisterInfo *TRI =
|
||||
TM->getSubtargetImpl()->getRegisterInfo();
|
||||
OS << ':'
|
||||
<< TM->getSubtargetImpl()
|
||||
->getRegisterInfo()
|
||||
->getRegClass(RCID)
|
||||
->getName();
|
||||
else
|
||||
<< TRI->getRegClassName(TRI->getRegClass(RCID));
|
||||
} else
|
||||
OS << ":RC" << RCID;
|
||||
}
|
||||
|
||||
@ -1724,7 +1722,8 @@ void MachineInstr::print(raw_ostream &OS, const TargetMachine *TM,
|
||||
if (!HaveSemi) OS << ";"; HaveSemi = true;
|
||||
for (unsigned i = 0; i != VirtRegs.size(); ++i) {
|
||||
const TargetRegisterClass *RC = MRI->getRegClass(VirtRegs[i]);
|
||||
OS << " " << RC->getName() << ':' << PrintReg(VirtRegs[i]);
|
||||
OS << " " << MRI->getTargetRegisterInfo()->getRegClassName(RC)
|
||||
<< ':' << PrintReg(VirtRegs[i]);
|
||||
for (unsigned j = i+1; j != VirtRegs.size();) {
|
||||
if (MRI->getRegClass(VirtRegs[j]) != RC) {
|
||||
++j;
|
||||
|
Reference in New Issue
Block a user