mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-29 10:25:12 +00:00
CodeGen: convert CCState interface to using ArrayRefs
Everyone except R600 was manually passing the length of a static array at each callsite, calculated in a variety of interesting ways. Far easier to let ArrayRef handle that. There should be no functional change, but out of tree targets may have to tweak their calls as with these examples. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230118 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -312,13 +312,13 @@ public:
|
||||
/// produce a single value.
|
||||
void AnalyzeCallResult(MVT VT, CCAssignFn Fn);
|
||||
|
||||
/// getFirstUnallocated - Return the first unallocated register in the set, or
|
||||
/// NumRegs if they are all allocated.
|
||||
unsigned getFirstUnallocated(const MCPhysReg *Regs, unsigned NumRegs) const {
|
||||
for (unsigned i = 0; i != NumRegs; ++i)
|
||||
/// getFirstUnallocated - Return the index of the first unallocated register
|
||||
/// in the set, or Regs.size() if they are all allocated.
|
||||
unsigned getFirstUnallocated(ArrayRef<MCPhysReg> Regs) const {
|
||||
for (unsigned i = 0; i < Regs.size(); ++i)
|
||||
if (!isAllocated(Regs[i]))
|
||||
return i;
|
||||
return NumRegs;
|
||||
return Regs.size();
|
||||
}
|
||||
|
||||
/// AllocateReg - Attempt to allocate one register. If it is not available,
|
||||
@@ -341,9 +341,9 @@ public:
|
||||
/// AllocateReg - Attempt to allocate one of the specified registers. If none
|
||||
/// are available, return zero. Otherwise, return the first one available,
|
||||
/// marking it and any aliases as allocated.
|
||||
unsigned AllocateReg(const MCPhysReg *Regs, unsigned NumRegs) {
|
||||
unsigned FirstUnalloc = getFirstUnallocated(Regs, NumRegs);
|
||||
if (FirstUnalloc == NumRegs)
|
||||
unsigned AllocateReg(ArrayRef<MCPhysReg> Regs) {
|
||||
unsigned FirstUnalloc = getFirstUnallocated(Regs);
|
||||
if (FirstUnalloc == Regs.size())
|
||||
return 0; // Didn't find the reg.
|
||||
|
||||
// Mark the register and any aliases as allocated.
|
||||
@@ -382,10 +382,9 @@ public:
|
||||
}
|
||||
|
||||
/// Version of AllocateReg with list of registers to be shadowed.
|
||||
unsigned AllocateReg(const MCPhysReg *Regs, const MCPhysReg *ShadowRegs,
|
||||
unsigned NumRegs) {
|
||||
unsigned FirstUnalloc = getFirstUnallocated(Regs, NumRegs);
|
||||
if (FirstUnalloc == NumRegs)
|
||||
unsigned AllocateReg(ArrayRef<MCPhysReg> Regs, const MCPhysReg *ShadowRegs) {
|
||||
unsigned FirstUnalloc = getFirstUnallocated(Regs);
|
||||
if (FirstUnalloc == Regs.size())
|
||||
return 0; // Didn't find the reg.
|
||||
|
||||
// Mark the register and any aliases as allocated.
|
||||
@@ -415,8 +414,8 @@ public:
|
||||
/// Version of AllocateStack with list of extra registers to be shadowed.
|
||||
/// Note that, unlike AllocateReg, this shadows ALL of the shadow registers.
|
||||
unsigned AllocateStack(unsigned Size, unsigned Align,
|
||||
const MCPhysReg *ShadowRegs, unsigned NumShadowRegs) {
|
||||
for (unsigned i = 0; i < NumShadowRegs; ++i)
|
||||
ArrayRef<MCPhysReg> ShadowRegs) {
|
||||
for (unsigned i = 0; i < ShadowRegs.size(); ++i)
|
||||
MarkAllocated(ShadowRegs[i]);
|
||||
return AllocateStack(Size, Align);
|
||||
}
|
||||
|
Reference in New Issue
Block a user