@@ -1849,21 +1849,21 @@ void CodeGenSchedModels::collectProcResources() {
18491849  //  Add resources separately defined by each subtarget.
18501850  for  (const  Record *WR : Records.getAllDerivedDefinitions (" WriteRes"  )) {
18511851    const  Record *ModelDef = WR->getValueAsDef (" SchedModel"  );
1852-     addWriteRes (WR, getProcModel (ModelDef). Index );
1852+     addWriteRes (WR, getProcModel (ModelDef));
18531853  }
18541854  for  (const  Record *SWR : Records.getAllDerivedDefinitions (" SchedWriteRes"  )) {
18551855    const  Record *ModelDef = SWR->getValueAsDef (" SchedModel"  );
1856-     addWriteRes (SWR, getProcModel (ModelDef). Index );
1856+     addWriteRes (SWR, getProcModel (ModelDef));
18571857  }
18581858  for  (const  Record *RA : Records.getAllDerivedDefinitions (" ReadAdvance"  )) {
18591859    const  Record *ModelDef = RA->getValueAsDef (" SchedModel"  );
1860-     addReadAdvance (RA, getProcModel (ModelDef). Index );
1860+     addReadAdvance (RA, getProcModel (ModelDef));
18611861  }
18621862  for  (const  Record *SRA :
18631863       Records.getAllDerivedDefinitions (" SchedReadAdvance"  )) {
18641864    if  (SRA->getValueInit (" SchedModel"  )->isComplete ()) {
18651865      const  Record *ModelDef = SRA->getValueAsDef (" SchedModel"  );
1866-       addReadAdvance (SRA, getProcModel (ModelDef). Index );
1866+       addReadAdvance (SRA, getProcModel (ModelDef));
18671867    }
18681868  }
18691869  //  Add ProcResGroups that are defined within this processor model, which may
@@ -2005,10 +2005,10 @@ void CodeGenSchedModels::collectRWResources(unsigned RWIdx, bool IsRead,
20052005  if  (SchedRW.TheDef ) {
20062006    if  (!IsRead && SchedRW.TheDef ->isSubClassOf (" SchedWriteRes"  )) {
20072007      for  (unsigned  Idx : ProcIndices)
2008-         addWriteRes (SchedRW.TheDef , Idx);
2008+         addWriteRes (SchedRW.TheDef , ProcModels[ Idx] );
20092009    } else  if  (IsRead && SchedRW.TheDef ->isSubClassOf (" SchedReadAdvance"  )) {
20102010      for  (unsigned  Idx : ProcIndices)
2011-         addReadAdvance (SchedRW.TheDef , Idx);
2011+         addReadAdvance (SchedRW.TheDef , ProcModels[ Idx] );
20122012    }
20132013  }
20142014  for  (auto  *Alias : SchedRW.Aliases ) {
@@ -2104,16 +2104,14 @@ void CodeGenSchedModels::addProcResource(const Record *ProcResKind,
21042104
21052105//  Add resources for a SchedWrite to this processor if they don't exist.
21062106void  CodeGenSchedModels::addWriteRes (const  Record *ProcWriteResDef,
2107-                                      unsigned  PIdx) {
2108-   assert (PIdx && " don't add resources to an invalid Processor model"  );
2109- 
2110-   ConstRecVec &WRDefs = ProcModels[PIdx].WriteResDefs ;
2107+                                      CodeGenProcModel &PM) {
2108+   ConstRecVec &WRDefs = PM.WriteResDefs ;
21112109  if  (is_contained (WRDefs, ProcWriteResDef))
21122110    return ;
21132111  WRDefs.push_back (ProcWriteResDef);
21142112
21152113  if  (ProcWriteResDef->isSubClassOf (" WriteRes"  )) {
2116-     auto  &WRMap = ProcModels[PIdx] .WriteResMap ;
2114+     auto  &WRMap = PM .WriteResMap ;
21172115    const  Record *WRDef = ProcWriteResDef->getValueAsDef (" WriteType"  );
21182116    if  (!WRMap.try_emplace (WRDef, ProcWriteResDef).second )
21192117      PrintFatalError (ProcWriteResDef->getLoc (),
@@ -2123,13 +2121,13 @@ void CodeGenSchedModels::addWriteRes(const Record *ProcWriteResDef,
21232121  //  Visit ProcResourceKinds referenced by the newly discovered WriteRes.
21242122  for  (const  Record *ProcResDef :
21252123       ProcWriteResDef->getValueAsListOfDefs (" ProcResources"  )) {
2126-     addProcResource (ProcResDef, ProcModels[PIdx] , ProcWriteResDef->getLoc ());
2124+     addProcResource (ProcResDef, PM , ProcWriteResDef->getLoc ());
21272125  }
21282126}
21292127
21302128//  Add resources for a ReadAdvance to this processor if they don't exist.
21312129void  CodeGenSchedModels::addReadAdvance (const  Record *ProcReadAdvanceDef,
2132-                                         unsigned  PIdx ) {
2130+                                         CodeGenProcModel &PM ) {
21332131  for  (const  Record *ValidWrite :
21342132       ProcReadAdvanceDef->getValueAsListOfDefs (" ValidWrites"  ))
21352133    if  (getSchedRWIdx (ValidWrite, /* IsRead=*/ false ) == 0 )
@@ -2139,13 +2137,13 @@ void CodeGenSchedModels::addReadAdvance(const Record *ProcReadAdvanceDef,
21392137          " any instruction ("   +
21402138              ValidWrite->getName () + " )"  );
21412139
2142-   ConstRecVec &RADefs = ProcModels[PIdx] .ReadAdvanceDefs ;
2140+   ConstRecVec &RADefs = PM .ReadAdvanceDefs ;
21432141  if  (is_contained (RADefs, ProcReadAdvanceDef))
21442142    return ;
21452143  RADefs.push_back (ProcReadAdvanceDef);
21462144
21472145  if  (ProcReadAdvanceDef->isSubClassOf (" ReadAdvance"  )) {
2148-     auto  &RAMap = ProcModels[PIdx] .ReadAdvanceMap ;
2146+     auto  &RAMap = PM .ReadAdvanceMap ;
21492147    const  Record *RADef = ProcReadAdvanceDef->getValueAsDef (" ReadType"  );
21502148    if  (!RAMap.try_emplace (RADef, ProcReadAdvanceDef).second )
21512149      PrintFatalError (ProcReadAdvanceDef->getLoc (),
0 commit comments