mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-27 00:21:03 +00:00
tblgen: always lookup values from the original vector as it could be grown under our feet.
PR16281. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183630 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -890,9 +890,9 @@ void CodeGenSchedModels::inferFromItinClass(Record *ItinClassDef,
|
|||||||
|
|
||||||
/// Infer classes from per-processor InstReadWrite definitions.
|
/// Infer classes from per-processor InstReadWrite definitions.
|
||||||
void CodeGenSchedModels::inferFromInstRWs(unsigned SCIdx) {
|
void CodeGenSchedModels::inferFromInstRWs(unsigned SCIdx) {
|
||||||
const RecVec &RWDefs = SchedClasses[SCIdx].InstRWs;
|
for (unsigned I = 0, E = SchedClasses[SCIdx].InstRWs.size(); I != E; ++I) {
|
||||||
for (RecIter RWI = RWDefs.begin(), RWE = RWDefs.end(); RWI != RWE; ++RWI) {
|
Record *Rec = SchedClasses[SCIdx].InstRWs[I];
|
||||||
const RecVec *InstDefs = Sets.expand(*RWI);
|
const RecVec *InstDefs = Sets.expand(Rec);
|
||||||
RecIter II = InstDefs->begin(), IE = InstDefs->end();
|
RecIter II = InstDefs->begin(), IE = InstDefs->end();
|
||||||
for (; II != IE; ++II) {
|
for (; II != IE; ++II) {
|
||||||
if (InstrClassMap[*II] == SCIdx)
|
if (InstrClassMap[*II] == SCIdx)
|
||||||
@@ -903,10 +903,10 @@ void CodeGenSchedModels::inferFromInstRWs(unsigned SCIdx) {
|
|||||||
if (II == IE)
|
if (II == IE)
|
||||||
continue;
|
continue;
|
||||||
IdxVec Writes, Reads;
|
IdxVec Writes, Reads;
|
||||||
findRWs((*RWI)->getValueAsListOfDefs("OperandReadWrites"), Writes, Reads);
|
findRWs(Rec->getValueAsListOfDefs("OperandReadWrites"), Writes, Reads);
|
||||||
unsigned PIdx = getProcModel((*RWI)->getValueAsDef("SchedModel")).Index;
|
unsigned PIdx = getProcModel(Rec->getValueAsDef("SchedModel")).Index;
|
||||||
IdxVec ProcIndices(1, PIdx);
|
IdxVec ProcIndices(1, PIdx);
|
||||||
inferFromRW(Writes, Reads, SCIdx, ProcIndices);
|
inferFromRW(Writes, Reads, SCIdx, ProcIndices); // May mutate SchedClasses.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user