mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
Internalize functions from various tools. NFC
And internalize some classes if I noticed them:)
This commit is contained in:
parent
366a2adebc
commit
4e56e25d41
@ -83,7 +83,7 @@ static bool canSafelyConvertTo16Bit(Value &V) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Convert a value to 16-bit.
|
// Convert a value to 16-bit.
|
||||||
Value *convertTo16Bit(Value &V, InstCombiner::BuilderTy &Builder) {
|
static Value *convertTo16Bit(Value &V, InstCombiner::BuilderTy &Builder) {
|
||||||
Type *VTy = V.getType();
|
Type *VTy = V.getType();
|
||||||
if (isa<FPExtInst>(&V) || isa<SExtInst>(&V) || isa<ZExtInst>(&V))
|
if (isa<FPExtInst>(&V) || isa<SExtInst>(&V) || isa<ZExtInst>(&V))
|
||||||
return cast<Instruction>(&V)->getOperand(0);
|
return cast<Instruction>(&V)->getOperand(0);
|
||||||
|
@ -125,7 +125,7 @@ MODIFIERS:
|
|||||||
[V] - display the version and exit
|
[V] - display the version and exit
|
||||||
)";
|
)";
|
||||||
|
|
||||||
void printHelpMessage() {
|
static void printHelpMessage() {
|
||||||
if (Stem.contains_lower("ranlib"))
|
if (Stem.contains_lower("ranlib"))
|
||||||
outs() << RanlibHelp;
|
outs() << RanlibHelp;
|
||||||
else if (Stem.contains_lower("ar"))
|
else if (Stem.contains_lower("ar"))
|
||||||
|
@ -60,7 +60,7 @@ cl::opt<bool> Summarize("summarize", cl::desc("Print the summary only."),
|
|||||||
|
|
||||||
ExitOnError ExitOnErr;
|
ExitOnError ExitOnErr;
|
||||||
|
|
||||||
void printBlameContext(const DILineInfo &LineInfo, unsigned Context) {
|
static void printBlameContext(const DILineInfo &LineInfo, unsigned Context) {
|
||||||
auto FileOrErr = MemoryBuffer::getFile(LineInfo.FileName);
|
auto FileOrErr = MemoryBuffer::getFile(LineInfo.FileName);
|
||||||
if (!FileOrErr) {
|
if (!FileOrErr) {
|
||||||
errs() << "Could not open file: " << LineInfo.FileName << "\n";
|
errs() << "Could not open file: " << LineInfo.FileName << "\n";
|
||||||
@ -84,10 +84,10 @@ void printBlameContext(const DILineInfo &LineInfo, unsigned Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void printInstructionInformation(const FileAnalysis &Analysis,
|
static void printInstructionInformation(const FileAnalysis &Analysis,
|
||||||
const Instr &InstrMeta,
|
const Instr &InstrMeta,
|
||||||
const GraphResult &Graph,
|
const GraphResult &Graph,
|
||||||
CFIProtectionStatus ProtectionStatus) {
|
CFIProtectionStatus ProtectionStatus) {
|
||||||
outs() << "Instruction: " << format_hex(InstrMeta.VMAddress, 2) << " ("
|
outs() << "Instruction: " << format_hex(InstrMeta.VMAddress, 2) << " ("
|
||||||
<< stringCFIProtectionStatus(ProtectionStatus) << "): ";
|
<< stringCFIProtectionStatus(ProtectionStatus) << "): ";
|
||||||
Analysis.printInstruction(InstrMeta, outs());
|
Analysis.printInstruction(InstrMeta, outs());
|
||||||
@ -97,8 +97,8 @@ void printInstructionInformation(const FileAnalysis &Analysis,
|
|||||||
Graph.printToDOT(Analysis, outs());
|
Graph.printToDOT(Analysis, outs());
|
||||||
}
|
}
|
||||||
|
|
||||||
void printInstructionStatus(unsigned BlameLine, bool CFIProtected,
|
static void printInstructionStatus(unsigned BlameLine, bool CFIProtected,
|
||||||
const DILineInfo &LineInfo) {
|
const DILineInfo &LineInfo) {
|
||||||
if (BlameLine) {
|
if (BlameLine) {
|
||||||
outs() << "Blacklist Match: " << BlacklistFilename << ":" << BlameLine
|
outs() << "Blacklist Match: " << BlacklistFilename << ":" << BlameLine
|
||||||
<< "\n";
|
<< "\n";
|
||||||
@ -122,8 +122,9 @@ void printInstructionStatus(unsigned BlameLine, bool CFIProtected,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void printIndirectCFInstructions(FileAnalysis &Analysis,
|
static void
|
||||||
const SpecialCaseList *SpecialCaseList) {
|
printIndirectCFInstructions(FileAnalysis &Analysis,
|
||||||
|
const SpecialCaseList *SpecialCaseList) {
|
||||||
uint64_t ExpectedProtected = 0;
|
uint64_t ExpectedProtected = 0;
|
||||||
uint64_t UnexpectedProtected = 0;
|
uint64_t UnexpectedProtected = 0;
|
||||||
uint64_t ExpectedUnprotected = 0;
|
uint64_t ExpectedUnprotected = 0;
|
||||||
|
@ -67,7 +67,7 @@ public:
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
LLVM_ATTRIBUTE_NORETURN void reportError(Twine Msg) {
|
static LLVM_ATTRIBUTE_NORETURN void reportError(Twine Msg) {
|
||||||
errs() << Msg;
|
errs() << Msg;
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@ -76,13 +76,7 @@ static void reportError(StringRef Input, std::error_code EC) {
|
|||||||
reportError(Twine(Input) + ": " + EC.message() + ".\n");
|
reportError(Twine(Input) + ": " + EC.message() + ".\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void error(std::error_code EC) {
|
static void error(Error EC) {
|
||||||
if (!EC)
|
|
||||||
return;
|
|
||||||
reportError(EC.message() + ".\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void error(Error EC) {
|
|
||||||
if (!EC)
|
if (!EC)
|
||||||
return;
|
return;
|
||||||
handleAllErrors(std::move(EC),
|
handleAllErrors(std::move(EC),
|
||||||
|
@ -377,7 +377,8 @@ writeIndex(MCStreamer &Out, MCSection *Section,
|
|||||||
&DWARFUnitIndex::Entry::SectionContribution::Length);
|
&DWARFUnitIndex::Entry::SectionContribution::Length);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string buildDWODescription(StringRef Name, StringRef DWPName, StringRef DWOName) {
|
static std::string buildDWODescription(StringRef Name, StringRef DWPName,
|
||||||
|
StringRef DWOName) {
|
||||||
std::string Text = "\'";
|
std::string Text = "\'";
|
||||||
Text += Name;
|
Text += Name;
|
||||||
Text += '\'';
|
Text += '\'';
|
||||||
|
@ -62,7 +62,7 @@ enum class IFSSymbolType {
|
|||||||
Unknown = 16,
|
Unknown = 16,
|
||||||
};
|
};
|
||||||
|
|
||||||
std::string getTypeName(IFSSymbolType Type) {
|
static std::string getTypeName(IFSSymbolType Type) {
|
||||||
switch (Type) {
|
switch (Type) {
|
||||||
case IFSSymbolType::NoType:
|
case IFSSymbolType::NoType:
|
||||||
return "NoType";
|
return "NoType";
|
||||||
@ -213,8 +213,8 @@ static Expected<std::unique_ptr<IFSStub>> readInputFile(StringRef FilePath) {
|
|||||||
return std::move(Stub);
|
return std::move(Stub);
|
||||||
}
|
}
|
||||||
|
|
||||||
int writeTbdStub(const llvm::Triple &T, const std::vector<IFSSymbol> &Symbols,
|
static int writeTbdStub(const Triple &T, const std::vector<IFSSymbol> &Symbols,
|
||||||
const StringRef Format, raw_ostream &Out) {
|
const StringRef Format, raw_ostream &Out) {
|
||||||
|
|
||||||
auto PlatformKindOrError =
|
auto PlatformKindOrError =
|
||||||
[](const llvm::Triple &T) -> llvm::Expected<llvm::MachO::PlatformKind> {
|
[](const llvm::Triple &T) -> llvm::Expected<llvm::MachO::PlatformKind> {
|
||||||
@ -275,8 +275,8 @@ int writeTbdStub(const llvm::Triple &T, const std::vector<IFSSymbol> &Symbols,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int writeElfStub(const llvm::Triple &T, const std::vector<IFSSymbol> &Symbols,
|
static int writeElfStub(const Triple &T, const std::vector<IFSSymbol> &Symbols,
|
||||||
const StringRef Format, raw_ostream &Out) {
|
const StringRef Format, raw_ostream &Out) {
|
||||||
SmallString<0> Storage;
|
SmallString<0> Storage;
|
||||||
Storage.clear();
|
Storage.clear();
|
||||||
raw_svector_ostream OS(Storage);
|
raw_svector_ostream OS(Storage);
|
||||||
@ -358,7 +358,7 @@ int writeElfStub(const llvm::Triple &T, const std::vector<IFSSymbol> &Symbols,
|
|||||||
return convertYAML(YIn, Out, ErrHandler) ? 0 : 1;
|
return convertYAML(YIn, Out, ErrHandler) ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int writeIfso(const IFSStub &Stub, bool IsWriteIfs, raw_ostream &Out) {
|
static int writeIfso(const IFSStub &Stub, bool IsWriteIfs, raw_ostream &Out) {
|
||||||
if (IsWriteIfs) {
|
if (IsWriteIfs) {
|
||||||
yaml::Output YamlOut(Out, NULL, /*WrapColumn =*/0);
|
yaml::Output YamlOut(Out, NULL, /*WrapColumn =*/0);
|
||||||
YamlOut << const_cast<IFSStub &>(Stub);
|
YamlOut << const_cast<IFSStub &>(Stub);
|
||||||
|
@ -770,7 +770,7 @@ Session::findSymbolInfo(StringRef SymbolName, Twine ErrorMsgStem) {
|
|||||||
|
|
||||||
} // end namespace llvm
|
} // end namespace llvm
|
||||||
|
|
||||||
Triple getFirstFileTriple() {
|
static Triple getFirstFileTriple() {
|
||||||
assert(!InputFiles.empty() && "InputFiles can not be empty");
|
assert(!InputFiles.empty() && "InputFiles can not be empty");
|
||||||
auto ObjBuffer =
|
auto ObjBuffer =
|
||||||
ExitOnErr(errorOrToExpected(MemoryBuffer::getFile(InputFiles.front())));
|
ExitOnErr(errorOrToExpected(MemoryBuffer::getFile(InputFiles.front())));
|
||||||
@ -779,7 +779,7 @@ Triple getFirstFileTriple() {
|
|||||||
return Obj->makeTriple();
|
return Obj->makeTriple();
|
||||||
}
|
}
|
||||||
|
|
||||||
Error sanitizeArguments(const Session &S) {
|
static Error sanitizeArguments(const Session &S) {
|
||||||
if (EntryPointName.empty()) {
|
if (EntryPointName.empty()) {
|
||||||
if (S.TPC->getTargetTriple().getObjectFormat() == Triple::MachO)
|
if (S.TPC->getTargetTriple().getObjectFormat() == Triple::MachO)
|
||||||
EntryPointName = "_main";
|
EntryPointName = "_main";
|
||||||
@ -801,7 +801,7 @@ Error sanitizeArguments(const Session &S) {
|
|||||||
return Error::success();
|
return Error::success();
|
||||||
}
|
}
|
||||||
|
|
||||||
Error loadProcessSymbols(Session &S) {
|
static Error loadProcessSymbols(Session &S) {
|
||||||
auto InternedEntryPointName = S.ES.intern(EntryPointName);
|
auto InternedEntryPointName = S.ES.intern(EntryPointName);
|
||||||
auto FilterMainEntryPoint = [InternedEntryPointName](SymbolStringPtr Name) {
|
auto FilterMainEntryPoint = [InternedEntryPointName](SymbolStringPtr Name) {
|
||||||
return Name != InternedEntryPointName;
|
return Name != InternedEntryPointName;
|
||||||
@ -813,7 +813,7 @@ Error loadProcessSymbols(Session &S) {
|
|||||||
return Error::success();
|
return Error::success();
|
||||||
}
|
}
|
||||||
|
|
||||||
Error loadDylibs() {
|
static Error loadDylibs() {
|
||||||
// FIXME: This should all be handled inside DynamicLibrary.
|
// FIXME: This should all be handled inside DynamicLibrary.
|
||||||
for (const auto &Dylib : Dylibs) {
|
for (const auto &Dylib : Dylibs) {
|
||||||
if (!sys::fs::is_regular_file(Dylib))
|
if (!sys::fs::is_regular_file(Dylib))
|
||||||
@ -827,12 +827,11 @@ Error loadDylibs() {
|
|||||||
return Error::success();
|
return Error::success();
|
||||||
}
|
}
|
||||||
|
|
||||||
void addPhonyExternalsGenerator(Session &S) {
|
static void addPhonyExternalsGenerator(Session &S) {
|
||||||
S.MainJD->addGenerator(std::make_unique<PhonyExternalsGenerator>());
|
S.MainJD->addGenerator(std::make_unique<PhonyExternalsGenerator>());
|
||||||
}
|
}
|
||||||
|
|
||||||
Error loadObjects(Session &S) {
|
static Error loadObjects(Session &S) {
|
||||||
|
|
||||||
std::map<unsigned, JITDylib *> IdxToJLD;
|
std::map<unsigned, JITDylib *> IdxToJLD;
|
||||||
|
|
||||||
// First, set up JITDylibs.
|
// First, set up JITDylibs.
|
||||||
@ -941,7 +940,7 @@ Error loadObjects(Session &S) {
|
|||||||
return Error::success();
|
return Error::success();
|
||||||
}
|
}
|
||||||
|
|
||||||
Error runChecks(Session &S) {
|
static Error runChecks(Session &S) {
|
||||||
|
|
||||||
auto TripleName = S.TPC->getTargetTriple().str();
|
auto TripleName = S.TPC->getTargetTriple().str();
|
||||||
std::string ErrorStr;
|
std::string ErrorStr;
|
||||||
@ -1036,12 +1035,14 @@ static Expected<JITEvaluatedSymbol> getMainEntryPoint(Session &S) {
|
|||||||
return S.ES.lookup(S.JDSearchOrder, EntryPointName);
|
return S.ES.lookup(S.JDSearchOrder, EntryPointName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
struct JITLinkTimers {
|
struct JITLinkTimers {
|
||||||
TimerGroup JITLinkTG{"llvm-jitlink timers", "timers for llvm-jitlink phases"};
|
TimerGroup JITLinkTG{"llvm-jitlink timers", "timers for llvm-jitlink phases"};
|
||||||
Timer LoadObjectsTimer{"load", "time to load/add object files", JITLinkTG};
|
Timer LoadObjectsTimer{"load", "time to load/add object files", JITLinkTG};
|
||||||
Timer LinkTimer{"link", "time to link object files", JITLinkTG};
|
Timer LinkTimer{"link", "time to link object files", JITLinkTG};
|
||||||
Timer RunTimer{"run", "time to execute jitlink'd code", JITLinkTG};
|
Timer RunTimer{"run", "time to execute jitlink'd code", JITLinkTG};
|
||||||
};
|
};
|
||||||
|
} // namespace
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
InitLLVM X(argc, argv);
|
InitLLVM X(argc, argv);
|
||||||
|
@ -337,7 +337,7 @@ getLocalLTOModule(StringRef Path, std::unique_ptr<MemoryBuffer> &Buffer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Print some statistics on the index for each input files.
|
/// Print some statistics on the index for each input files.
|
||||||
void printIndexStats() {
|
static void printIndexStats() {
|
||||||
for (auto &Filename : InputFilenames) {
|
for (auto &Filename : InputFilenames) {
|
||||||
ExitOnError ExitOnErr("llvm-lto: error loading file '" + Filename + "': ");
|
ExitOnError ExitOnErr("llvm-lto: error loading file '" + Filename + "': ");
|
||||||
std::unique_ptr<ModuleSummaryIndex> Index =
|
std::unique_ptr<ModuleSummaryIndex> Index =
|
||||||
|
@ -64,7 +64,7 @@ public:
|
|||||||
};
|
};
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
LLVM_ATTRIBUTE_NORETURN void reportError(Twine Msg) {
|
LLVM_ATTRIBUTE_NORETURN static void reportError(Twine Msg) {
|
||||||
WithColor::error(errs(), "llvm-mt") << Msg << '\n';
|
WithColor::error(errs(), "llvm-mt") << Msg << '\n';
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@ -73,12 +73,7 @@ static void reportError(StringRef Input, std::error_code EC) {
|
|||||||
reportError(Twine(Input) + ": " + EC.message());
|
reportError(Twine(Input) + ": " + EC.message());
|
||||||
}
|
}
|
||||||
|
|
||||||
void error(std::error_code EC) {
|
static void error(Error EC) {
|
||||||
if (EC)
|
|
||||||
reportError(EC.message());
|
|
||||||
}
|
|
||||||
|
|
||||||
void error(Error EC) {
|
|
||||||
if (EC)
|
if (EC)
|
||||||
handleAllErrors(std::move(EC), [&](const ErrorInfoBase &EI) {
|
handleAllErrors(std::move(EC), [&](const ErrorInfoBase &EI) {
|
||||||
reportError(EI.message());
|
reportError(EI.message());
|
||||||
|
@ -252,13 +252,15 @@ private:
|
|||||||
/// maintain an index of unique functions, and provide a means of iterating
|
/// maintain an index of unique functions, and provide a means of iterating
|
||||||
/// through all the instrumented call stacks which we know about.
|
/// through all the instrumented call stacks which we know about.
|
||||||
|
|
||||||
|
namespace {
|
||||||
struct StackDuration {
|
struct StackDuration {
|
||||||
llvm::SmallVector<int64_t, 4> TerminalDurations;
|
llvm::SmallVector<int64_t, 4> TerminalDurations;
|
||||||
llvm::SmallVector<int64_t, 4> IntermediateDurations;
|
llvm::SmallVector<int64_t, 4> IntermediateDurations;
|
||||||
};
|
};
|
||||||
|
} // namespace
|
||||||
|
|
||||||
StackDuration mergeStackDuration(const StackDuration &Left,
|
static StackDuration mergeStackDuration(const StackDuration &Left,
|
||||||
const StackDuration &Right) {
|
const StackDuration &Right) {
|
||||||
StackDuration Data{};
|
StackDuration Data{};
|
||||||
Data.TerminalDurations.reserve(Left.TerminalDurations.size() +
|
Data.TerminalDurations.reserve(Left.TerminalDurations.size() +
|
||||||
Right.TerminalDurations.size());
|
Right.TerminalDurations.size());
|
||||||
@ -280,7 +282,7 @@ StackDuration mergeStackDuration(const StackDuration &Left,
|
|||||||
using StackTrieNode = TrieNode<StackDuration>;
|
using StackTrieNode = TrieNode<StackDuration>;
|
||||||
|
|
||||||
template <AggregationType AggType>
|
template <AggregationType AggType>
|
||||||
std::size_t GetValueForStack(const StackTrieNode *Node);
|
static std::size_t GetValueForStack(const StackTrieNode *Node);
|
||||||
|
|
||||||
// When computing total time spent in a stack, we're adding the timings from
|
// When computing total time spent in a stack, we're adding the timings from
|
||||||
// its callees and the timings from when it was a leaf.
|
// its callees and the timings from when it was a leaf.
|
||||||
@ -669,9 +671,9 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
std::string CreateErrorMessage(StackTrie::AccountRecordStatus Error,
|
static std::string CreateErrorMessage(StackTrie::AccountRecordStatus Error,
|
||||||
const XRayRecord &Record,
|
const XRayRecord &Record,
|
||||||
const FuncIdConversionHelper &Converter) {
|
const FuncIdConversionHelper &Converter) {
|
||||||
switch (Error) {
|
switch (Error) {
|
||||||
case StackTrie::AccountRecordStatus::ENTRY_NOT_FOUND:
|
case StackTrie::AccountRecordStatus::ENTRY_NOT_FOUND:
|
||||||
return std::string(
|
return std::string(
|
||||||
|
@ -446,8 +446,8 @@ static TargetMachine* GetTargetMachine(Triple TheTriple, StringRef CPUStr,
|
|||||||
void initializeExampleIRTransforms(llvm::PassRegistry &Registry);
|
void initializeExampleIRTransforms(llvm::PassRegistry &Registry);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void exportDebugifyStats(llvm::StringRef Path,
|
||||||
void exportDebugifyStats(llvm::StringRef Path, const DebugifyStatsMap &Map) {
|
const DebugifyStatsMap &Map) {
|
||||||
std::error_code EC;
|
std::error_code EC;
|
||||||
raw_fd_ostream OS{Path, EC};
|
raw_fd_ostream OS{Path, EC};
|
||||||
if (EC) {
|
if (EC) {
|
||||||
|
@ -36,7 +36,7 @@ inline uint64_t CountFromData(uint64_t Data, char SizeofPtr) {
|
|||||||
return Data & ((1ull << (SizeofPtr * 8 - kSanitizerStatKindBits)) - 1);
|
return Data & ((1ull << (SizeofPtr * 8 - kSanitizerStatKindBits)) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t ReadLE(char Size, const char *Begin, const char *End) {
|
static uint64_t ReadLE(char Size, const char *Begin, const char *End) {
|
||||||
uint64_t Result = 0;
|
uint64_t Result = 0;
|
||||||
char Pos = 0;
|
char Pos = 0;
|
||||||
while (Begin < End && Pos != Size) {
|
while (Begin < End && Pos != Size) {
|
||||||
@ -47,7 +47,8 @@ uint64_t ReadLE(char Size, const char *Begin, const char *End) {
|
|||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *ReadModule(char SizeofPtr, const char *Begin, const char *End) {
|
static const char *ReadModule(char SizeofPtr, const char *Begin,
|
||||||
|
const char *End) {
|
||||||
const char *FilenameBegin = Begin;
|
const char *FilenameBegin = Begin;
|
||||||
while (Begin != End && *Begin)
|
while (Begin != End && *Begin)
|
||||||
++Begin;
|
++Begin;
|
||||||
|
@ -324,7 +324,7 @@ struct InputAnnotation {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/// Get an abbreviation for the check type.
|
/// Get an abbreviation for the check type.
|
||||||
std::string GetCheckTypeAbbreviation(Check::FileCheckType Ty) {
|
static std::string GetCheckTypeAbbreviation(Check::FileCheckType Ty) {
|
||||||
switch (Ty) {
|
switch (Ty) {
|
||||||
case Check::CheckPlain:
|
case Check::CheckPlain:
|
||||||
if (Ty.getCount() > 1)
|
if (Ty.getCount() > 1)
|
||||||
|
@ -356,7 +356,7 @@ EmitRegUnitPressure(raw_ostream &OS, const CodeGenRegBank &RegBank,
|
|||||||
using DwarfRegNumsMapPair = std::pair<Record*, std::vector<int64_t>>;
|
using DwarfRegNumsMapPair = std::pair<Record*, std::vector<int64_t>>;
|
||||||
using DwarfRegNumsVecTy = std::vector<DwarfRegNumsMapPair>;
|
using DwarfRegNumsVecTy = std::vector<DwarfRegNumsMapPair>;
|
||||||
|
|
||||||
void finalizeDwarfRegNumsKeys(DwarfRegNumsVecTy &DwarfRegNums) {
|
static void finalizeDwarfRegNumsKeys(DwarfRegNumsVecTy &DwarfRegNums) {
|
||||||
// Sort and unique to get a map-like vector. We want the last assignment to
|
// Sort and unique to get a map-like vector. We want the last assignment to
|
||||||
// match previous behaviour.
|
// match previous behaviour.
|
||||||
std::stable_sort(DwarfRegNums.begin(), DwarfRegNums.end(),
|
std::stable_sort(DwarfRegNums.begin(), DwarfRegNums.end(),
|
||||||
|
@ -1507,7 +1507,8 @@ static void emitPredicates(const CodeGenSchedTransition &T,
|
|||||||
|
|
||||||
// Used by method `SubtargetEmitter::emitSchedModelHelpersImpl()` to generate
|
// Used by method `SubtargetEmitter::emitSchedModelHelpersImpl()` to generate
|
||||||
// epilogue code for the auto-generated helper.
|
// epilogue code for the auto-generated helper.
|
||||||
void emitSchedModelHelperEpilogue(raw_ostream &OS, bool ShouldReturnZero) {
|
static void emitSchedModelHelperEpilogue(raw_ostream &OS,
|
||||||
|
bool ShouldReturnZero) {
|
||||||
if (ShouldReturnZero) {
|
if (ShouldReturnZero) {
|
||||||
OS << " // Don't know how to resolve this scheduling class.\n"
|
OS << " // Don't know how to resolve this scheduling class.\n"
|
||||||
<< " return 0;\n";
|
<< " return 0;\n";
|
||||||
@ -1517,15 +1518,15 @@ void emitSchedModelHelperEpilogue(raw_ostream &OS, bool ShouldReturnZero) {
|
|||||||
OS << " report_fatal_error(\"Expected a variant SchedClass\");\n";
|
OS << " report_fatal_error(\"Expected a variant SchedClass\");\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
bool hasMCSchedPredicates(const CodeGenSchedTransition &T) {
|
static bool hasMCSchedPredicates(const CodeGenSchedTransition &T) {
|
||||||
return all_of(T.PredTerm, [](const Record *Rec) {
|
return all_of(T.PredTerm, [](const Record *Rec) {
|
||||||
return Rec->isSubClassOf("MCSchedPredicate");
|
return Rec->isSubClassOf("MCSchedPredicate");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void collectVariantClasses(const CodeGenSchedModels &SchedModels,
|
static void collectVariantClasses(const CodeGenSchedModels &SchedModels,
|
||||||
IdxVec &VariantClasses,
|
IdxVec &VariantClasses,
|
||||||
bool OnlyExpandMCInstPredicates) {
|
bool OnlyExpandMCInstPredicates) {
|
||||||
for (const CodeGenSchedClass &SC : SchedModels.schedClasses()) {
|
for (const CodeGenSchedClass &SC : SchedModels.schedClasses()) {
|
||||||
// Ignore non-variant scheduling classes.
|
// Ignore non-variant scheduling classes.
|
||||||
if (SC.Transitions.empty())
|
if (SC.Transitions.empty())
|
||||||
@ -1544,7 +1545,8 @@ void collectVariantClasses(const CodeGenSchedModels &SchedModels,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void collectProcessorIndices(const CodeGenSchedClass &SC, IdxVec &ProcIndices) {
|
static void collectProcessorIndices(const CodeGenSchedClass &SC,
|
||||||
|
IdxVec &ProcIndices) {
|
||||||
// A variant scheduling class may define transitions for multiple
|
// A variant scheduling class may define transitions for multiple
|
||||||
// processors. This function identifies wich processors are associated with
|
// processors. This function identifies wich processors are associated with
|
||||||
// transition rules specified by variant class `SC`.
|
// transition rules specified by variant class `SC`.
|
||||||
|
Loading…
Reference in New Issue
Block a user