Lines Matching refs:CurRec
115 static Init *QualifyName(Record &CurRec, MultiClass *CurMultiClass, in QualifyName() argument
118 BinOpInit::getStrConcat(CurRec.getNameInit(), StringInit::get(Scoper)); in QualifyName()
127 NewName = BinOp->Fold(&CurRec); in QualifyName()
141 bool TGParser::AddValue(Record *CurRec, SMLoc Loc, const RecordVal &RV) { in AddValue() argument
142 if (!CurRec) in AddValue()
143 CurRec = &CurMultiClass->Rec; in AddValue()
145 if (RecordVal *ERV = CurRec->getValue(RV.getNameInit())) { in AddValue()
153 CurRec->addValue(RV); in AddValue()
160 bool TGParser::SetValue(Record *CurRec, SMLoc Loc, Init *ValName, in SetValue() argument
165 if (!CurRec) CurRec = &CurMultiClass->Rec; in SetValue()
167 RecordVal *RV = CurRec->getValue(ValName); in SetValue()
229 bool TGParser::AddSubClass(Record *CurRec, SubClassReference &SubClass) { in AddSubClass() argument
233 if (AddValue(CurRec, SubClass.RefRange.Start, Val)) in AddSubClass()
245 MapResolver R(CurRec); in AddSubClass()
250 if (SetValue(CurRec, SubClass.RefRange.Start, TArgs[i], in AddSubClass()
253 } else if (!CurRec->getValue(TArgs[i])->getValue()->isComplete()) { in AddSubClass()
260 R.set(TArgs[i], CurRec->getValue(TArgs[i])->getValue()); in AddSubClass()
262 CurRec->removeValue(TArgs[i]); in AddSubClass()
266 if (CurRec->isClass()) in AddSubClass()
268 VarInit::get(QualifiedNameOfImplicitName(*CurRec), StringRecTy::get()); in AddSubClass()
270 Name = CurRec->getNameInit(); in AddSubClass()
273 CurRec->resolveReferences(R); in AddSubClass()
279 if (CurRec->isSubClassOf(SCPair.first)) in AddSubClass()
282 CurRec->addSuperClass(SCPair.first, SCPair.second); in AddSubClass()
285 if (CurRec->isSubClassOf(SC)) in AddSubClass()
288 CurRec->addSuperClass(SC, SubClass.RefRange); in AddSubClass()
508 Record *CurRec = nullptr; in ParseObjectName() local
510 CurRec = &CurMultiClass->Rec; in ParseObjectName()
512 Init *Name = ParseValue(CurRec, StringRecTy::get(), ParseNameMode); in ParseObjectName()
573 ParseSubClassReference(Record *CurRec, bool isDefm) { in ParseSubClassReference() argument
598 ParseValueList(Result.TemplateArgs, CurRec, Result.Rec); in ParseSubClassReference()
830 Init *TGParser::ParseIDValue(Record *CurRec, StringInit *Name, SMLoc NameLoc, in ParseIDValue() argument
832 if (CurRec) { in ParseIDValue()
833 if (const RecordVal *RV = CurRec->getValue(Name)) in ParseIDValue()
837 if ((CurRec && CurRec->isClass()) || CurMultiClass) { in ParseIDValue()
843 TemplateArgName = QualifyName(*CurRec, CurMultiClass, Name, ":"); in ParseIDValue()
845 Record *TemplateRec = CurMultiClass ? &CurMultiClass->Rec : CurRec; in ParseIDValue()
870 if (CurRec && !CurRec->isClass() && !CurMultiClass && in ParseIDValue()
871 CurRec->getNameInit() == Name) in ParseIDValue()
872 return UnOpInit::get(UnOpInit::CAST, Name, CurRec->getType()); in ParseIDValue()
882 Init *TGParser::ParseOperation(Record *CurRec, RecTy *ItemType) { in ParseOperation() argument
934 Init *LHS = ParseValue(CurRec); in ParseOperation()
995 return (UnOpInit::get(Code, LHS, Type))->Fold(CurRec); in ParseOperation()
1012 Init *LHS = ParseValue(CurRec); in ParseOperation()
1121 InitList.push_back(ParseValue(CurRec, ArgType)); in ParseOperation()
1183 RHS = (BinOpInit::get(Code, InitList.back(), RHS, Type))->Fold(CurRec); in ParseOperation()
1190 ->Fold(CurRec); in ParseOperation()
1211 if (CurRec && CurRec->getValue(LHS)) { in ParseOperation()
1224 Init *MHS = ParseValue(CurRec); in ParseOperation()
1273 Record *ParseRec = CurRec; in ParseOperation()
1304 ->Fold(CurRec); in ParseOperation()
1335 Init *LHS = ParseValue(CurRec); in ParseOperation()
1345 Init *MHS = ParseValue(CurRec, ItemType); in ParseOperation()
1356 Init *RHS = ParseValue(CurRec, ItemType); in ParseOperation()
1445 return (TernOpInit::get(Code, LHS, MHS, RHS, Type))->Fold(CurRec); in ParseOperation()
1457 Init *StartUntyped = ParseValue(CurRec); in ParseOperation()
1474 Init *ListUntyped = ParseValue(CurRec); in ParseOperation()
1503 if (CurRec && CurRec->getValue(A)) { in ParseOperation()
1521 if (CurRec && CurRec->getValue(B)) { in ParseOperation()
1537 Record *ParseRec = CurRec; in ParseOperation()
1571 ->Fold(CurRec); in ParseOperation()
1625 Init *TGParser::ParseSimpleValue(Record *CurRec, RecTy *ItemType, in ParseSimpleValue() argument
1634 return ParseSimpleValue(CurRec, ItemType, Mode); in ParseSimpleValue()
1670 return ParseIDValue(CurRec, Name, NameLoc, Mode); // Value ::= IDValue in ParseSimpleValue()
1688 ParseValueList(Args, CurRec, Class); in ParseSimpleValue()
1737 ParseValueList(Vals, CurRec); in ParseSimpleValue()
1800 ParseValueList(Vals, CurRec, nullptr, in ParseSimpleValue()
1884 Init *Operator = ParseValue(CurRec); in ParseSimpleValue()
1900 ParseDagArgList(DagArgs, CurRec); in ParseSimpleValue()
1939 return ParseOperation(CurRec, ItemType); in ParseSimpleValue()
1953 Init *TGParser::ParseValue(Record *CurRec, RecTy *ItemType, IDParseMode Mode) { in ParseValue() argument
1954 Init *Result = ParseSimpleValue(CurRec, ItemType, Mode); in ParseValue()
2020 Result = FieldInit::get(Result, FieldName)->Fold(CurRec); in ParseValue()
2040 ->Fold(CurRec)); in ParseValue()
2064 Init *RHSResult = ParseValue(CurRec, nullptr, ParseNameMode); in ParseValue()
2074 ->Fold(CurRec)); in ParseValue()
2099 Record *CurRec) { in ParseDagArgList() argument
2110 Init *Val = ParseValue(CurRec); in ParseDagArgList()
2141 void TGParser::ParseValueList(SmallVectorImpl<Init*> &Result, Record *CurRec, in ParseValueList() argument
2161 Result.push_back(ParseValue(CurRec, ItemType)); in ParseValueList()
2182 Result.push_back(ParseValue(CurRec, ItemType)); in ParseValueList()
2200 Init *TGParser::ParseDeclaration(Record *CurRec, in ParseDeclaration() argument
2225 if (CurRec) in ParseDeclaration()
2226 DeclName = QualifyName(*CurRec, CurMultiClass, DeclName, ":"); in ParseDeclaration()
2235 if (AddValue(CurRec, IdLoc, RecordVal(DeclName, Type, HasField))) in ParseDeclaration()
2242 Init *Val = ParseValue(CurRec, Type); in ParseDeclaration()
2244 SetValue(CurRec, ValLoc, DeclName, None, Val)) in ParseDeclaration()
2341 bool TGParser::ParseTemplateArgList(Record *CurRec) { in ParseTemplateArgList() argument
2345 Record *TheRecToAddTo = CurRec ? CurRec : &CurMultiClass->Rec; in ParseTemplateArgList()
2348 Init *TemplArg = ParseDeclaration(CurRec, true/*templateargs*/); in ParseTemplateArgList()
2359 TemplArg = ParseDeclaration(CurRec, true/*templateargs*/); in ParseTemplateArgList()
2380 bool TGParser::ParseBodyItem(Record *CurRec) { in ParseBodyItem() argument
2382 if (!ParseDeclaration(CurRec, false)) in ParseBodyItem()
2408 RecordVal *Field = CurRec->getValue(FieldName); in ParseBodyItem()
2414 Init *Val = ParseValue(CurRec, Type); in ParseBodyItem()
2421 return SetValue(CurRec, IdLoc, FieldName, BitList, Val); in ParseBodyItem()
2431 bool TGParser::ParseBody(Record *CurRec) { in ParseBody() argument
2444 if (ParseBodyItem(CurRec)) in ParseBody()
2454 bool TGParser::ApplyLetStack(Record *CurRec) { in ApplyLetStack() argument
2457 if (SetValue(CurRec, LR.Loc, LR.Name, LR.Bits, LR.Value)) in ApplyLetStack()
2483 bool TGParser::ParseObjectBody(Record *CurRec) { in ParseObjectBody() argument
2489 SubClassReference SubClass = ParseSubClassReference(CurRec, false); in ParseObjectBody()
2495 if (AddSubClass(CurRec, SubClass)) in ParseObjectBody()
2500 SubClass = ParseSubClassReference(CurRec, false); in ParseObjectBody()
2504 if (ApplyLetStack(CurRec)) in ParseObjectBody()
2507 return ParseBody(CurRec); in ParseObjectBody()
2521 std::unique_ptr<Record> CurRec; in ParseDef() local
2527 CurRec = make_unique<Record>(Records.getNewAnonymousName(), DefLoc, Records, in ParseDef()
2530 CurRec = make_unique<Record>(Name, DefLoc, Records); in ParseDef()
2532 if (ParseObjectBody(CurRec.get())) in ParseDef()
2535 return addEntry(std::move(CurRec)); in ParseDef()
2648 Record *CurRec = Records.getClass(Lex.getCurStrVal()); in ParseClass() local
2649 if (CurRec) { in ParseClass()
2651 if (!CurRec->getValues().empty() || in ParseClass()
2652 !CurRec->getSuperClasses().empty() || in ParseClass()
2653 !CurRec->getTemplateArgs().empty()) in ParseClass()
2654 return TokError("Class '" + CurRec->getNameInitAsString() + in ParseClass()
2661 CurRec = NewRec.get(); in ParseClass()
2668 if (ParseTemplateArgList(CurRec)) in ParseClass()
2671 return ParseObjectBody(CurRec); in ParseClass()