diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2023-02-11 12:38:04 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2023-02-11 12:38:11 +0000 |
commit | e3b557809604d036af6e00c60f012c2025b59a5e (patch) | |
tree | 8a11ba2269a3b669601e2fd41145b174008f4da8 /llvm/utils/TableGen/CodeGenSchedule.cpp | |
parent | 08e8dd7b9db7bb4a9de26d44c1cbfd24e869c014 (diff) |
Diffstat (limited to 'llvm/utils/TableGen/CodeGenSchedule.cpp')
-rw-r--r-- | llvm/utils/TableGen/CodeGenSchedule.cpp | 20 |
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); |