TargetRegisterInfo::TargetRegisterInfo(const TargetRegisterDesc *D, unsigned NR,
regclass_iterator RCB, regclass_iterator RCE,
- int CFSO, int CFDO)
- : Desc(D), NumRegs(NR), RegClassBegin(RCB), RegClassEnd(RCE) {
+ int CFSO, int CFDO,
+ const unsigned* subregs, const unsigned subregsize)
+ : SubregHash(subregs), SubregHashSize(subregsize), Desc(D), NumRegs(NR),
+ RegClassBegin(RCB), RegClassEnd(RCE) {
assert(NumRegs < FirstVirtualRegister &&
"Target has too many physical registers!");
CallFrameSetupOpcode = CFSO;
CallFrameDestroyOpcode = CFDO;
-
- for (unsigned i = 0; i < NumRegs; ++i) {
- const TargetRegisterDesc* CurrReg = Desc + i;
-
- // Initialize the Subregs set, which stores pairs (a, b) where
- // b is a subreg of a.
- if (CurrReg->SubRegs)
- for (const unsigned* CurrSR = CurrReg->SubRegs; *CurrSR; ++CurrSR)
- Subregs.insert(std::make_pair(i, *CurrSR));
- }
}
TargetRegisterInfo::~TargetRegisterInfo() {}