[llvm] r183630 - tblgen: always lookup values from the original vector as it could be grown under our feet.

Arnold aschwaighofer at apple.com
Sun Jun 9 14:00:30 PDT 2013


Thanks Ben!


On Jun 9, 2013, at 8:20 AM, Benjamin Kramer <benny.kra at googlemail.com> wrote:

> Author: d0k
> Date: Sun Jun  9 10:20:23 2013
> New Revision: 183630
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=183630&view=rev
> Log:
> tblgen: always lookup values from the original vector as it could be grown under our feet.
> 
> PR16281.
> 
> Modified:
>    llvm/trunk/utils/TableGen/CodeGenSchedule.cpp
> 
> Modified: llvm/trunk/utils/TableGen/CodeGenSchedule.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenSchedule.cpp?rev=183630&r1=183629&r2=183630&view=diff
> ==============================================================================
> --- llvm/trunk/utils/TableGen/CodeGenSchedule.cpp (original)
> +++ llvm/trunk/utils/TableGen/CodeGenSchedule.cpp Sun Jun  9 10:20:23 2013
> @@ -890,9 +890,9 @@ void CodeGenSchedModels::inferFromItinCl
> 
> /// Infer classes from per-processor InstReadWrite definitions.
> void CodeGenSchedModels::inferFromInstRWs(unsigned SCIdx) {
> -  const RecVec &RWDefs = SchedClasses[SCIdx].InstRWs;
> -  for (RecIter RWI = RWDefs.begin(), RWE = RWDefs.end(); RWI != RWE; ++RWI) {
> -    const RecVec *InstDefs = Sets.expand(*RWI);
> +  for (unsigned I = 0, E = SchedClasses[SCIdx].InstRWs.size(); I != E; ++I) {
> +    Record *Rec = SchedClasses[SCIdx].InstRWs[I];
> +    const RecVec *InstDefs = Sets.expand(Rec);
>     RecIter II = InstDefs->begin(), IE = InstDefs->end();
>     for (; II != IE; ++II) {
>       if (InstrClassMap[*II] == SCIdx)
> @@ -903,10 +903,10 @@ void CodeGenSchedModels::inferFromInstRW
>     if (II == IE)
>       continue;
>     IdxVec Writes, Reads;
> -    findRWs((*RWI)->getValueAsListOfDefs("OperandReadWrites"), Writes, Reads);
> -    unsigned PIdx = getProcModel((*RWI)->getValueAsDef("SchedModel")).Index;
> +    findRWs(Rec->getValueAsListOfDefs("OperandReadWrites"), Writes, Reads);
> +    unsigned PIdx = getProcModel(Rec->getValueAsDef("SchedModel")).Index;
>     IdxVec ProcIndices(1, PIdx);
> -    inferFromRW(Writes, Reads, SCIdx, ProcIndices);
> +    inferFromRW(Writes, Reads, SCIdx, ProcIndices); // May mutate SchedClasses.
>   }
> }
> 
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list