| Index: src/IceTargetLowering.cpp
|
| diff --git a/src/IceTargetLowering.cpp b/src/IceTargetLowering.cpp
|
| index f0cf542b4684a2f44135bb5c3cdef442b5f8bf8c..c6e445e2683d32086f439fee93d0e71172b09ae6 100644
|
| --- a/src/IceTargetLowering.cpp
|
| +++ b/src/IceTargetLowering.cpp
|
| @@ -118,7 +118,7 @@ Variable *LoweringContext::availabilityGet(Operand *Src) const {
|
|
|
| namespace {
|
|
|
| -void printRegisterSet(Ostream &Str, const llvm::SmallBitVector &Bitset,
|
| +void printRegisterSet(Ostream &Str, const SmallBitVector &Bitset,
|
| std::function<IceString(RegNumT)> getRegName,
|
| const IceString &LineIndentString) {
|
| constexpr size_t RegistersPerLine = 16;
|
| @@ -162,14 +162,13 @@ LLVM_ATTRIBUTE_NORETURN void badTargetFatalError(TargetArch Target) {
|
| } // end of anonymous namespace
|
|
|
| void TargetLowering::filterTypeToRegisterSet(
|
| - GlobalContext *Ctx, int32_t NumRegs,
|
| - llvm::SmallBitVector TypeToRegisterSet[], size_t TypeToRegisterSetSize,
|
| - std::function<IceString(RegNumT)> getRegName,
|
| + GlobalContext *Ctx, int32_t NumRegs, SmallBitVector TypeToRegisterSet[],
|
| + size_t TypeToRegisterSetSize, std::function<IceString(RegNumT)> getRegName,
|
| std::function<IceString(RegClass)> getRegClassName) {
|
| - std::vector<llvm::SmallBitVector> UseSet(TypeToRegisterSetSize,
|
| - llvm::SmallBitVector(NumRegs));
|
| - std::vector<llvm::SmallBitVector> ExcludeSet(TypeToRegisterSetSize,
|
| - llvm::SmallBitVector(NumRegs));
|
| + std::vector<SmallBitVector> UseSet(TypeToRegisterSetSize,
|
| + SmallBitVector(NumRegs));
|
| + std::vector<SmallBitVector> ExcludeSet(TypeToRegisterSetSize,
|
| + SmallBitVector(NumRegs));
|
|
|
| std::unordered_map<IceString, RegNumT> RegNameToIndex;
|
| for (int32_t RegIndex = 0; RegIndex < NumRegs; ++RegIndex) {
|
| @@ -185,7 +184,7 @@ void TargetLowering::filterTypeToRegisterSet(
|
| // bit is set in RegSet[][]. If "<class>:" is missing, then the bit is set
|
| // for all classes.
|
| auto processRegList = [&](const ClFlags::StringVector &RegNames,
|
| - std::vector<llvm::SmallBitVector> &RegSet) {
|
| + std::vector<SmallBitVector> &RegSet) {
|
| for (const IceString &RegClassAndName : RegNames) {
|
| IceString RClass;
|
| IceString RName;
|
| @@ -219,9 +218,9 @@ void TargetLowering::filterTypeToRegisterSet(
|
|
|
| // Apply filters.
|
| for (size_t TypeIndex = 0; TypeIndex < TypeToRegisterSetSize; ++TypeIndex) {
|
| - llvm::SmallBitVector *TypeBitSet = &TypeToRegisterSet[TypeIndex];
|
| - llvm::SmallBitVector *UseBitSet = &UseSet[TypeIndex];
|
| - llvm::SmallBitVector *ExcludeBitSet = &ExcludeSet[TypeIndex];
|
| + SmallBitVector *TypeBitSet = &TypeToRegisterSet[TypeIndex];
|
| + SmallBitVector *UseBitSet = &UseSet[TypeIndex];
|
| + SmallBitVector *ExcludeBitSet = &ExcludeSet[TypeIndex];
|
| if (UseBitSet->any())
|
| *TypeBitSet = *UseBitSet;
|
| (*TypeBitSet).reset(*ExcludeBitSet);
|
| @@ -470,7 +469,7 @@ void TargetLowering::regAlloc(RegAllocKind Kind) {
|
| RegInclude |= RegSet_CalleeSave;
|
| if (hasFramePointer())
|
| RegExclude |= RegSet_FramePointer;
|
| - llvm::SmallBitVector RegMask = getRegisterSet(RegInclude, RegExclude);
|
| + SmallBitVector RegMask = getRegisterSet(RegInclude, RegExclude);
|
| bool Repeat = (Kind == RAK_Global && Ctx->getFlags().shouldRepeatRegAlloc());
|
| do {
|
| LinearScan.init(Kind);
|
| @@ -539,7 +538,7 @@ void TargetLowering::sortVarsByAlignment(VarList &Dest,
|
| }
|
|
|
| void TargetLowering::getVarStackSlotParams(
|
| - VarList &SortedSpilledVariables, llvm::SmallBitVector &RegsUsed,
|
| + VarList &SortedSpilledVariables, SmallBitVector &RegsUsed,
|
| size_t *GlobalsSize, size_t *SpillAreaSizeBytes,
|
| uint32_t *SpillAreaAlignmentBytes, uint32_t *LocalsSlotsAlignmentBytes,
|
| std::function<bool(Variable *)> TargetVarHook) {
|
| @@ -570,7 +569,7 @@ void TargetLowering::getVarStackSlotParams(
|
| // returns a second time.
|
| const bool SimpleCoalescing = !callsReturnsTwice();
|
|
|
| - std::vector<size_t> LocalsSize(Func->getNumNodes());
|
| + CfgVector<size_t> LocalsSize(Func->getNumNodes());
|
| const VarList &Variables = Func->getVariables();
|
| VarList SpilledVariables;
|
| for (Variable *Var : Variables) {
|
| @@ -668,7 +667,7 @@ void TargetLowering::assignVarStackSlots(VarList &SortedSpilledVariables,
|
| SpillAreaPaddingBytes += TestPadding;
|
| size_t GlobalsSpaceUsed = SpillAreaPaddingBytes;
|
| size_t NextStackOffset = SpillAreaPaddingBytes;
|
| - std::vector<size_t> LocalsSize(Func->getNumNodes());
|
| + CfgVector<size_t> LocalsSize(Func->getNumNodes());
|
| const bool SimpleCoalescing = !callsReturnsTwice();
|
|
|
| for (Variable *Var : SortedSpilledVariables) {
|
|
|