summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/CodeGenSchedule.cpp
diff options
context:
space:
mode:
authorMatthias Braun <matze@braunis.de>2016-06-21 03:24:03 +0000
committerMatthias Braun <matze@braunis.de>2016-06-21 03:24:03 +0000
commit6b1fd9aa63984a96c71c7c3efd0738af7b848072 (patch)
tree2c2a7f6b72bdc71276027176dec5d01daed51ea0 /llvm/utils/TableGen/CodeGenSchedule.cpp
parente4cf09ad071bd2a2fbe4a926447a69fdc2b7e740 (diff)
downloadbcm5719-llvm-6b1fd9aa63984a96c71c7c3efd0738af7b848072.tar.gz
bcm5719-llvm-6b1fd9aa63984a96c71c7c3efd0738af7b848072.zip
TableGen/CodeGenSchedule: Move some getAllDerivedDefinitions() calls out of inner loops
This cuts the runtime of the two slowest tblgen invocations in aarch64 in half for me... llvm-svn: 273235
Diffstat (limited to 'llvm/utils/TableGen/CodeGenSchedule.cpp')
-rw-r--r--llvm/utils/TableGen/CodeGenSchedule.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/llvm/utils/TableGen/CodeGenSchedule.cpp b/llvm/utils/TableGen/CodeGenSchedule.cpp
index c52d3b0e9fc..57a426bffb3 100644
--- a/llvm/utils/TableGen/CodeGenSchedule.cpp
+++ b/llvm/utils/TableGen/CodeGenSchedule.cpp
@@ -1429,6 +1429,9 @@ void CodeGenSchedModels::verifyProcResourceGroups(CodeGenProcModel &PM) {
// Collect and sort WriteRes, ReadAdvance, and ProcResources.
void CodeGenSchedModels::collectProcResources() {
+ ProcResourceDefs = Records.getAllDerivedDefinitions("ProcResourceUnits");
+ ProcResGroups = Records.getAllDerivedDefinitions("ProcResGroup");
+
// Add any subtarget-specific SchedReadWrites that are directly associated
// with processor resources. Refer to the parent SchedClass's ProcIndices to
// determine which processors they apply to.
@@ -1523,6 +1526,9 @@ void CodeGenSchedModels::collectProcResources() {
dbgs() << '\n');
verifyProcResourceGroups(PM);
}
+
+ ProcResourceDefs.clear();
+ ProcResGroups.clear();
}
void CodeGenSchedModels::checkCompleteness() {
@@ -1652,8 +1658,8 @@ Record *CodeGenSchedModels::findProcResUnits(Record *ProcResKind,
return ProcResKind;
Record *ProcUnitDef = nullptr;
- RecVec ProcResourceDefs =
- Records.getAllDerivedDefinitions("ProcResourceUnits");
+ assert(!ProcResourceDefs.empty());
+ assert(!ProcResGroups.empty());
for (RecIter RI = ProcResourceDefs.begin(), RE = ProcResourceDefs.end();
RI != RE; ++RI) {
@@ -1668,7 +1674,6 @@ Record *CodeGenSchedModels::findProcResUnits(Record *ProcResKind,
ProcUnitDef = *RI;
}
}
- RecVec ProcResGroups = Records.getAllDerivedDefinitions("ProcResGroup");
for (RecIter RI = ProcResGroups.begin(), RE = ProcResGroups.end();
RI != RE; ++RI) {
OpenPOWER on IntegriCloud