aboutsummaryrefslogtreecommitdiff
path: root/llvm/utils/TableGen/CodeGenSchedule.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2023-02-11 12:38:04 +0000
committerDimitry Andric <dim@FreeBSD.org>2023-02-11 12:38:11 +0000
commite3b557809604d036af6e00c60f012c2025b59a5e (patch)
tree8a11ba2269a3b669601e2fd41145b174008f4da8 /llvm/utils/TableGen/CodeGenSchedule.cpp
parent08e8dd7b9db7bb4a9de26d44c1cbfd24e869c014 (diff)
Diffstat (limited to 'llvm/utils/TableGen/CodeGenSchedule.cpp')
-rw-r--r--llvm/utils/TableGen/CodeGenSchedule.cpp20
1 files changed, 9 insertions, 11 deletions
diff --git a/llvm/utils/TableGen/CodeGenSchedule.cpp b/llvm/utils/TableGen/CodeGenSchedule.cpp
index 4933bfc476f4..441a088c1731 100644
--- a/llvm/utils/TableGen/CodeGenSchedule.cpp
+++ b/llvm/utils/TableGen/CodeGenSchedule.cpp
@@ -100,7 +100,7 @@ struct InstRegexOp : public SetTheory::Operator {
if (removeParens(Original).find_first_of("|?") != std::string::npos)
FirstMeta = 0;
- Optional<Regex> Regexpr = None;
+ std::optional<Regex> Regexpr;
StringRef Prefix = Original.substr(0, FirstMeta);
StringRef PatStr = Original.substr(FirstMeta);
if (!PatStr.empty()) {
@@ -492,7 +492,7 @@ void CodeGenSchedModels::collectLoadStoreQueueInfo() {
if (PM.StoreQueue) {
PrintError(Queue->getLoc(),
"Expected a single StoreQueue definition");
- PrintNote(PM.LoadQueue->getLoc(),
+ PrintNote(PM.StoreQueue->getLoc(),
"Previous definition of StoreQueue was here");
}
@@ -734,14 +734,12 @@ unsigned CodeGenSchedModels::getSchedRWIdx(const Record *Def,
}
bool CodeGenSchedModels::hasReadOfWrite(Record *WriteDef) const {
- for (const CodeGenSchedRW &Read : SchedReads) {
- Record *ReadDef = Read.TheDef;
- if (!ReadDef || !ReadDef->isSubClassOf("ProcReadAdvance"))
- continue;
-
- RecVec ValidWrites = ReadDef->getValueAsListOfDefs("ValidWrites");
- if (is_contained(ValidWrites, WriteDef)) {
- return true;
+ for (auto& ProcModel : ProcModels) {
+ const RecVec &RADefs = ProcModel.ReadAdvanceDefs;
+ for (auto& RADef : RADefs) {
+ RecVec ValidWrites = RADef->getValueAsListOfDefs("ValidWrites");
+ if (is_contained(ValidWrites, WriteDef))
+ return true;
}
}
return false;
@@ -840,7 +838,7 @@ unsigned CodeGenSchedModels::findRWForSequence(ArrayRef<unsigned> Seq,
std::vector<CodeGenSchedRW> &RWVec = IsRead ? SchedReads : SchedWrites;
auto I = find_if(RWVec, [Seq](CodeGenSchedRW &RW) {
- return makeArrayRef(RW.Sequence) == Seq;
+ return ArrayRef(RW.Sequence) == Seq;
});
// Index zero reserved for invalid RW.
return I == RWVec.end() ? 0 : std::distance(RWVec.begin(), I);