Lines Matching refs:CurRec

113 static Init *QualifyName(Record &CurRec, Init *Name) {  in QualifyName()  argument
114 RecordKeeper &RK = CurRec.getRecords(); in QualifyName()
116 CurRec.getNameInit(), in QualifyName()
117 StringInit::get(RK, CurRec.isMultiClass() ? "::" : ":")); in QualifyName()
121 NewName = BinOp->Fold(&CurRec); in QualifyName()
169 if (CurRec) { in getVar()
171 if (RecordVal *RV = CurRec->getValue(Name)) { in getVar()
178 if (CurRec->isClass()) in getVar()
179 if (auto *V = FindValueInArgs(CurRec, Name)) in getVar()
210 bool TGParser::AddValue(Record *CurRec, SMLoc Loc, const RecordVal &RV) { in AddValue() argument
211 if (!CurRec) in AddValue()
212 CurRec = &CurMultiClass->Rec; in AddValue()
214 if (RecordVal *ERV = CurRec->getValue(RV.getNameInit())) { in AddValue()
222 CurRec->addValue(RV); in AddValue()
229 bool TGParser::SetValue(Record *CurRec, SMLoc Loc, Init *ValName, in SetValue() argument
234 if (!CurRec) CurRec = &CurMultiClass->Rec; in SetValue()
236 RecordVal *RV = CurRec->getValue(ValName); in SetValue()
298 bool TGParser::AddSubClass(Record *CurRec, SubClassReference &SubClass) { in AddSubClass() argument
300 MapResolver R(CurRec); in AddSubClass()
306 if (AddValue(CurRec, SubClass.RefRange.Start, Field)) in AddSubClass()
314 CurRec->appendAssertions(SC); in AddSubClass()
317 CurRec->appendDumps(SC); in AddSubClass()
320 if (CurRec->isClass()) in AddSubClass()
321 Name = VarInit::get(QualifiedNameOfImplicitName(*CurRec), in AddSubClass()
324 Name = CurRec->getNameInit(); in AddSubClass()
327 CurRec->resolveReferences(R); in AddSubClass()
333 if (CurRec->isSubClassOf(SCPair.first)) in AddSubClass()
336 CurRec->addSuperClass(SCPair.first, SCPair.second); in AddSubClass()
339 if (CurRec->isSubClassOf(SC)) in AddSubClass()
342 CurRec->addSuperClass(SC, SubClass.RefRange); in AddSubClass()
683 Record *CurRec = nullptr; in ParseObjectName() local
685 CurRec = &CurMultiClass->Rec; in ParseObjectName()
687 Init *Name = ParseValue(CurRec, StringRecTy::get(Records), ParseNameMode); in ParseObjectName()
756 ParseSubClassReference(Record *CurRec, bool isDefm) { in ParseSubClassReference() argument
774 if (ParseTemplateArgValueList(Result.TemplateArgs, CurRec, Result.Rec)) { in ParseSubClassReference()
831 TypedInit *TGParser::ParseSliceElement(Record *CurRec) { in ParseSliceElement() argument
833 auto *CurVal = ParseValue(CurRec); in ParseSliceElement()
844 CurVal = ParseValue(CurRec); in ParseSliceElement()
881 ->Fold(CurRec)); in ParseSliceElement()
895 TypedInit *TGParser::ParseSliceElements(Record *CurRec, bool Single) { in ParseSliceElements() argument
909 CurVal = ParseSliceElement(CurRec); in ParseSliceElements()
1147 Init *TGParser::ParseIDValue(Record *CurRec, StringInit *Name, SMRange NameLoc, in ParseIDValue() argument
1167 if (CurRec && !CurRec->isClass() && !CurMultiClass && in ParseIDValue()
1168 CurRec->getNameInit() == Name) in ParseIDValue()
1169 return UnOpInit::get(UnOpInit::CAST, Name, CurRec->getType()); in ParseIDValue()
1179 Init *TGParser::ParseOperation(Record *CurRec, RecTy *ItemType) { in ParseOperation() argument
1283 Init *LHS = ParseValue(CurRec); in ParseOperation()
1345 return (UnOpInit::get(Code, LHS, Type))->Fold(CurRec); in ParseOperation()
1361 Init *LHS = ParseValue(CurRec); in ParseOperation()
1387 Init *Expr = ParseValue(CurRec); in ParseOperation()
1416 return (ExistsOpInit::get(Type, Expr))->Fold(CurRec); in ParseOperation()
1566 InitList.push_back(ParseValue(CurRec, ArgType)); in ParseOperation()
1740 RHS = (BinOpInit::get(Code, InitList.back(), RHS, Type))->Fold(CurRec); in ParseOperation()
1747 ->Fold(CurRec); in ParseOperation()
1755 return ParseOperationForEachFilter(CurRec, ItemType); in ParseOperation()
1776 Args.push_back(ParseValue(CurRec)); in ParseOperation()
1828 ->Fold(CurRec); in ParseOperation()
1854 ->Fold(CurRec); in ParseOperation()
1896 Init *LHS = ParseValue(CurRec); in ParseOperation()
1905 Init *MHS = ParseValue(CurRec, ItemType); in ParseOperation()
1915 Init *RHS = ParseValue(CurRec, ItemType); in ParseOperation()
2032 return (TernOpInit::get(Code, LHS, MHS, RHS, Type))->Fold(CurRec); in ParseOperation()
2036 return ParseOperationSubstr(CurRec, ItemType); in ParseOperation()
2039 return ParseOperationFind(CurRec, ItemType); in ParseOperation()
2042 return ParseOperationCond(CurRec, ItemType); in ParseOperation()
2052 Init *StartUntyped = ParseValue(CurRec); in ParseOperation()
2068 Init *ListUntyped = ParseValue(CurRec); in ParseOperation()
2097 if (CurRec && CurRec->getValue(A)) { in ParseOperation()
2115 if (CurRec && CurRec->getValue(B)) { in ParseOperation()
2131 Record *ParseRec = CurRec; in ParseOperation()
2167 ->Fold(CurRec); in ParseOperation()
2206 Init *TGParser::ParseOperationSubstr(Record *CurRec, RecTy *ItemType) { in ParseOperationSubstr() argument
2217 Init *LHS = ParseValue(CurRec); in ParseOperationSubstr()
2227 Init *MHS = ParseValue(CurRec); in ParseOperationSubstr()
2235 RHS = ParseValue(CurRec); in ParseOperationSubstr()
2288 return (TernOpInit::get(Code, LHS, MHS, RHS, Type))->Fold(CurRec); in ParseOperationSubstr()
2294 Init *TGParser::ParseOperationFind(Record *CurRec, RecTy *ItemType) { in ParseOperationFind() argument
2305 Init *LHS = ParseValue(CurRec); in ParseOperationFind()
2315 Init *MHS = ParseValue(CurRec); in ParseOperationFind()
2323 RHS = ParseValue(CurRec); in ParseOperationFind()
2376 return (TernOpInit::get(Code, LHS, MHS, RHS, Type))->Fold(CurRec); in ParseOperationFind()
2383 Init *TGParser::ParseOperationForEachFilter(Record *CurRec, RecTy *ItemType) { in ParseOperationForEachFilter() argument
2400 if (CurRec && CurRec->getValue(LHS)) { in ParseOperationForEachFilter()
2412 Init *MHS = ParseValue(CurRec); in ParseOperationForEachFilter()
2470 Record *ParseRec = CurRec; in ParseOperationForEachFilter()
2504 ->Fold(CurRec); in ParseOperationForEachFilter()
2507 Init *TGParser::ParseOperationCond(Record *CurRec, RecTy *ItemType) { in ParseOperationCond() argument
2522 Init *V = ParseValue(CurRec); in ParseOperationCond()
2532 V = ParseValue(CurRec, ItemType); in ParseOperationCond()
2582 return CondOpInit::get(Case, Val, Type)->Fold(CurRec); in ParseOperationCond()
2612 Init *TGParser::ParseSimpleValue(Record *CurRec, RecTy *ItemType, in ParseSimpleValue() argument
2619 return ParseOperation(CurRec, ItemType); in ParseSimpleValue()
2673 return ParseIDValue(CurRec, Name, NameLoc, Mode); // Value ::= IDValue in ParseSimpleValue()
2687 if (ParseTemplateArgValueList(Args, CurRec, Class)) in ParseSimpleValue()
2706 ParseValueList(Vals, CurRec); in ParseSimpleValue()
2768 ParseValueList(Vals, CurRec, in ParseSimpleValue()
2849 Init *Operator = ParseValue(CurRec); in ParseSimpleValue()
2865 ParseDagArgList(DagArgs, CurRec); in ParseSimpleValue()
2888 Init *TGParser::ParseValue(Record *CurRec, RecTy *ItemType, IDParseMode Mode) { in ParseValue() argument
2890 Init *Result = ParseSimpleValue(CurRec, ItemType, Mode); in ParseValue()
2938 TypedInit *RHS = ParseSliceElements(CurRec, /*Single=*/true); in ParseValue()
2944 BinOpInit::get(BinOpInit::LISTSLICE, LHS, RHS, LHSTy)->Fold(CurRec); in ParseValue()
2948 ->Fold(CurRec); in ParseValue()
2986 Result = FieldInit::get(Result, FieldName)->Fold(CurRec); in ParseValue()
3012 Init *RHSResult = ParseValue(CurRec, ItemType, ParseValueMode); in ParseValue()
3026 ->Fold(CurRec)); in ParseValue()
3051 Init *RHSResult = ParseValue(CurRec, nullptr, ParseNameMode); in ParseValue()
3063 ->Fold(CurRec)); in ParseValue()
3089 Record *CurRec) { in ParseDagArgList() argument
3100 Init *Val = ParseValue(CurRec); in ParseDagArgList()
3131 void TGParser::ParseValueList(SmallVectorImpl<Init *> &Result, Record *CurRec, in ParseValueList() argument
3134 Result.push_back(ParseValue(CurRec, ItemType)); in ParseValueList()
3144 Result.push_back(ParseValue(CurRec, ItemType)); in ParseValueList()
3161 SmallVectorImpl<ArgumentInit *> &Result, Record *CurRec, Record *ArgsRec) { in ParseTemplateArgValueList() argument
3180 CurRec, in ParseTemplateArgValueList()
3200 Value = ParseValue(CurRec, NamedArg->getType()); in ParseTemplateArgValueList()
3237 Init *TGParser::ParseDeclaration(Record *CurRec, in ParseDeclaration() argument
3267 BadField = AddValue(CurRec, IdLoc, in ParseDeclaration()
3271 } else if (CurRec) { // class template argument in ParseDeclaration()
3272 DeclName = QualifyName(*CurRec, DeclName); in ParseDeclaration()
3274 AddValue(CurRec, IdLoc, in ParseDeclaration()
3280 AddValue(CurRec, IdLoc, in ParseDeclaration()
3289 Init *Val = ParseValue(CurRec, Type); in ParseDeclaration()
3291 SetValue(CurRec, ValLoc, DeclName, std::nullopt, Val, in ParseDeclaration()
3391 bool TGParser::ParseTemplateArgList(Record *CurRec) { in ParseTemplateArgList() argument
3395 Record *TheRecToAddTo = CurRec ? CurRec : &CurMultiClass->Rec; in ParseTemplateArgList()
3398 Init *TemplArg = ParseDeclaration(CurRec, true/*templateargs*/); in ParseTemplateArgList()
3407 TemplArg = ParseDeclaration(CurRec, true/*templateargs*/); in ParseTemplateArgList()
3431 bool TGParser::ParseBodyItem(Record *CurRec) { in ParseBodyItem() argument
3433 return ParseAssert(nullptr, CurRec); in ParseBodyItem()
3436 return ParseDefvar(CurRec); in ParseBodyItem()
3439 return ParseDump(nullptr, CurRec); in ParseBodyItem()
3442 if (!ParseDeclaration(CurRec, false)) in ParseBodyItem()
3466 RecordVal *Field = CurRec->getValue(FieldName); in ParseBodyItem()
3477 Init *Val = ParseValue(CurRec, Type); in ParseBodyItem()
3483 return SetValue(CurRec, IdLoc, FieldName, BitList, Val); in ParseBodyItem()
3493 bool TGParser::ParseBody(Record *CurRec) { in ParseBody() argument
3502 if (ParseBodyItem(CurRec)) in ParseBody()
3520 bool TGParser::ApplyLetStack(Record *CurRec) { in ApplyLetStack() argument
3523 if (SetValue(CurRec, LR.Loc, LR.Name, LR.Bits, LR.Value)) in ApplyLetStack()
3558 bool TGParser::ParseObjectBody(Record *CurRec) { in ParseObjectBody() argument
3560 TGVarScope *ObjectScope = PushScope(CurRec); in ParseObjectBody()
3565 SubClassReference SubClass = ParseSubClassReference(CurRec, false); in ParseObjectBody()
3571 if (AddSubClass(CurRec, SubClass)) in ParseObjectBody()
3576 SubClass = ParseSubClassReference(CurRec, false); in ParseObjectBody()
3580 if (ApplyLetStack(CurRec)) in ParseObjectBody()
3583 bool Result = ParseBody(CurRec); in ParseObjectBody()
3604 std::unique_ptr<Record> CurRec; in ParseDef() local
3610 CurRec = std::make_unique<Record>(Records.getNewAnonymousName(), DefLoc, in ParseDef()
3613 CurRec = std::make_unique<Record>(Name, NameLoc, Records); in ParseDef()
3616 if (ParseObjectBody(CurRec.get())) in ParseDef()
3619 return addEntry(std::move(CurRec)); in ParseDef()
3672 bool TGParser::ParseDefvar(Record *CurRec) { in ParseDefvar() argument
3683 if (CurRec) { in ParseDefvar()
3684 auto *V = CurRec->getValue(DeclName->getValue()); in ParseDefvar()
3698 Init *Value = ParseValue(CurRec); in ParseDefvar()
3877 bool TGParser::ParseAssert(MultiClass *CurMultiClass, Record *CurRec) { in ParseAssert() argument
3882 Init *Condition = ParseValue(CurRec); in ParseAssert()
3891 Init *Message = ParseValue(CurRec); in ParseAssert()
3898 if (CurRec) in ParseAssert()
3899 CurRec->addAssertion(ConditionLoc, Condition, Message); in ParseAssert()
3917 Record *CurRec = Records.getClass(Lex.getCurStrVal()); in ParseClass() local
3918 if (CurRec) { in ParseClass()
3920 if (!CurRec->getValues().empty() || in ParseClass()
3921 !CurRec->getSuperClasses().empty() || in ParseClass()
3922 !CurRec->getTemplateArgs().empty()) in ParseClass()
3923 return TokError("Class '" + CurRec->getNameInitAsString() + in ParseClass()
3926 CurRec->updateClassLoc(Lex.getLoc()); in ParseClass()
3931 CurRec = NewRec.get(); in ParseClass()
3937 TGVarScope *ClassScope = PushScope(CurRec); in ParseClass()
3940 if (ParseTemplateArgList(CurRec)) in ParseClass()
3943 if (ParseObjectBody(CurRec)) in ParseClass()
3947 CurRec->checkUnusedTemplateArgs(); in ParseClass()
4393 bool TGParser::ParseDump(MultiClass *CurMultiClass, Record *CurRec) { in ParseDump() argument
4399 Init *Message = ParseValue(CurRec); in ParseDump()
4407 ->Fold(CurRec); in ParseDump()
4412 if (CurRec) in ParseDump()
4413 CurRec->addDump(Loc, Message); in ParseDump()