Lines Matching refs:CurRec

115 static Init *QualifyName(Record &CurRec, MultiClass *CurMultiClass, Init *Name,  in QualifyName()  argument
117 RecordKeeper &RK = CurRec.getRecords(); in QualifyName()
118 Init *NewName = BinOpInit::getStrConcat(CurRec.getNameInit(), in QualifyName()
128 NewName = BinOp->Fold(&CurRec); in QualifyName()
143 bool TGParser::AddValue(Record *CurRec, SMLoc Loc, const RecordVal &RV) { in AddValue() argument
144 if (!CurRec) in AddValue()
145 CurRec = &CurMultiClass->Rec; in AddValue()
147 if (RecordVal *ERV = CurRec->getValue(RV.getNameInit())) { in AddValue()
155 CurRec->addValue(RV); in AddValue()
162 bool TGParser::SetValue(Record *CurRec, SMLoc Loc, Init *ValName, in SetValue() argument
167 if (!CurRec) CurRec = &CurMultiClass->Rec; in SetValue()
169 RecordVal *RV = CurRec->getValue(ValName); in SetValue()
231 bool TGParser::AddSubClass(Record *CurRec, SubClassReference &SubClass) { in AddSubClass() argument
233 MapResolver R(CurRec); in AddSubClass()
241 if (AddValue(CurRec, SubClass.RefRange.Start, Field)) in AddSubClass()
263 CurRec->appendAssertions(SC); in AddSubClass()
266 if (CurRec->isClass()) in AddSubClass()
267 Name = VarInit::get(QualifiedNameOfImplicitName(*CurRec), 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()
550 Record *CurRec = nullptr; in ParseObjectName() local
552 CurRec = &CurMultiClass->Rec; in ParseObjectName()
554 Init *Name = ParseValue(CurRec, StringRecTy::get(Records), ParseNameMode); in ParseObjectName()
621 ParseSubClassReference(Record *CurRec, bool isDefm) { in ParseSubClassReference() argument
639 if (ParseTemplateArgValueList(Result.TemplateArgs, CurRec, Result.Rec)) { in ParseSubClassReference()
870 Init *TGParser::ParseIDValue(Record *CurRec, StringInit *Name, SMLoc NameLoc, in ParseIDValue() argument
872 if (CurRec) { in ParseIDValue()
873 if (const RecordVal *RV = CurRec->getValue(Name)) in ParseIDValue()
877 if ((CurRec && CurRec->isClass()) || CurMultiClass) { in ParseIDValue()
883 TemplateArgName = QualifyName(*CurRec, CurMultiClass, Name, ":"); in ParseIDValue()
885 Record *TemplateRec = CurMultiClass ? &CurMultiClass->Rec : CurRec; in ParseIDValue()
917 if (CurRec && !CurRec->isClass() && !CurMultiClass && in ParseIDValue()
918 CurRec->getNameInit() == Name) in ParseIDValue()
919 return UnOpInit::get(UnOpInit::CAST, Name, CurRec->getType()); in ParseIDValue()
929 Init *TGParser::ParseOperation(Record *CurRec, RecTy *ItemType) { in ParseOperation() argument
1009 Init *LHS = ParseValue(CurRec); in ParseOperation()
1071 return (UnOpInit::get(Code, LHS, Type))->Fold(CurRec); in ParseOperation()
1087 Init *LHS = ParseValue(CurRec); in ParseOperation()
1113 Init *Expr = ParseValue(CurRec); in ParseOperation()
1142 return (ExistsOpInit::get(Type, Expr))->Fold(CurRec); in ParseOperation()
1261 InitList.push_back(ParseValue(CurRec, ArgType)); in ParseOperation()
1414 RHS = (BinOpInit::get(Code, InitList.back(), RHS, Type))->Fold(CurRec); in ParseOperation()
1421 ->Fold(CurRec); in ParseOperation()
1429 return ParseOperationForEachFilter(CurRec, ItemType); in ParseOperation()
1459 Init *LHS = ParseValue(CurRec); in ParseOperation()
1468 Init *MHS = ParseValue(CurRec, ItemType); in ParseOperation()
1478 Init *RHS = ParseValue(CurRec, ItemType); in ParseOperation()
1566 return (TernOpInit::get(Code, LHS, MHS, RHS, Type))->Fold(CurRec); in ParseOperation()
1570 return ParseOperationSubstr(CurRec, ItemType); in ParseOperation()
1573 return ParseOperationFind(CurRec, ItemType); in ParseOperation()
1576 return ParseOperationCond(CurRec, ItemType); in ParseOperation()
1586 Init *StartUntyped = ParseValue(CurRec); in ParseOperation()
1602 Init *ListUntyped = ParseValue(CurRec); in ParseOperation()
1631 if (CurRec && CurRec->getValue(A)) { in ParseOperation()
1649 if (CurRec && CurRec->getValue(B)) { in ParseOperation()
1665 Record *ParseRec = CurRec; in ParseOperation()
1699 ->Fold(CurRec); in ParseOperation()
1738 Init *TGParser::ParseOperationSubstr(Record *CurRec, RecTy *ItemType) { in ParseOperationSubstr() argument
1749 Init *LHS = ParseValue(CurRec); in ParseOperationSubstr()
1759 Init *MHS = ParseValue(CurRec); in ParseOperationSubstr()
1767 RHS = ParseValue(CurRec); in ParseOperationSubstr()
1820 return (TernOpInit::get(Code, LHS, MHS, RHS, Type))->Fold(CurRec); in ParseOperationSubstr()
1826 Init *TGParser::ParseOperationFind(Record *CurRec, RecTy *ItemType) { in ParseOperationFind() argument
1837 Init *LHS = ParseValue(CurRec); in ParseOperationFind()
1847 Init *MHS = ParseValue(CurRec); in ParseOperationFind()
1855 RHS = ParseValue(CurRec); in ParseOperationFind()
1908 return (TernOpInit::get(Code, LHS, MHS, RHS, Type))->Fold(CurRec); in ParseOperationFind()
1915 Init *TGParser::ParseOperationForEachFilter(Record *CurRec, RecTy *ItemType) { in ParseOperationForEachFilter() argument
1932 if (CurRec && CurRec->getValue(LHS)) { in ParseOperationForEachFilter()
1944 Init *MHS = ParseValue(CurRec); in ParseOperationForEachFilter()
2002 Record *ParseRec = CurRec; in ParseOperationForEachFilter()
2035 ->Fold(CurRec); in ParseOperationForEachFilter()
2038 Init *TGParser::ParseOperationCond(Record *CurRec, RecTy *ItemType) { in ParseOperationCond() argument
2053 Init *V = ParseValue(CurRec); in ParseOperationCond()
2063 V = ParseValue(CurRec, ItemType); in ParseOperationCond()
2113 return CondOpInit::get(Case, Val, Type)->Fold(CurRec); in ParseOperationCond()
2138 Init *TGParser::ParseSimpleValue(Record *CurRec, RecTy *ItemType, in ParseSimpleValue() argument
2190 return ParseIDValue(CurRec, Name, NameLoc, Mode); // Value ::= IDValue in ParseSimpleValue()
2203 if (ParseTemplateArgValueList(Args, CurRec, Class)) in ParseSimpleValue()
2230 ParseValueList(Vals, CurRec); in ParseSimpleValue()
2292 ParseValueList(Vals, CurRec, in ParseSimpleValue()
2373 Init *Operator = ParseValue(CurRec); in ParseSimpleValue()
2389 ParseDagArgList(DagArgs, CurRec); in ParseSimpleValue()
2440 return ParseOperation(CurRec, ItemType); in ParseSimpleValue()
2454 Init *TGParser::ParseValue(Record *CurRec, RecTy *ItemType, IDParseMode Mode) { in ParseValue() argument
2455 Init *Result = ParseSimpleValue(CurRec, ItemType, Mode); in ParseValue()
2519 Result = FieldInit::get(Result, FieldName)->Fold(CurRec); in ParseValue()
2545 Init *RHSResult = ParseValue(CurRec, ItemType, ParseValueMode); in ParseValue()
2559 ->Fold(CurRec)); in ParseValue()
2584 Init *RHSResult = ParseValue(CurRec, nullptr, ParseNameMode); in ParseValue()
2596 ->Fold(CurRec)); in ParseValue()
2622 Record *CurRec) { in ParseDagArgList() argument
2633 Init *Val = ParseValue(CurRec); in ParseDagArgList()
2664 void TGParser::ParseValueList(SmallVectorImpl<Init *> &Result, Record *CurRec, in ParseValueList() argument
2667 Result.push_back(ParseValue(CurRec, ItemType)); in ParseValueList()
2677 Result.push_back(ParseValue(CurRec, ItemType)); in ParseValueList()
2692 Record *CurRec, Record *ArgsRec) { in ParseTemplateArgValueList() argument
2711 Init *Value = ParseValue(CurRec, ItemType); in ParseTemplateArgValueList()
2734 Init *TGParser::ParseDeclaration(Record *CurRec, in ParseDeclaration() argument
2759 BadField = AddValue(CurRec, IdLoc, in ParseDeclaration()
2764 } else if (CurRec) { // class template argument in ParseDeclaration()
2765 DeclName = QualifyName(*CurRec, CurMultiClass, DeclName, ":"); in ParseDeclaration()
2766 BadField = AddValue(CurRec, IdLoc, RecordVal(DeclName, IdLoc, Type, in ParseDeclaration()
2772 BadField = AddValue(CurRec, IdLoc, RecordVal(DeclName, IdLoc, Type, in ParseDeclaration()
2781 Init *Val = ParseValue(CurRec, Type); in ParseDeclaration()
2783 SetValue(CurRec, ValLoc, DeclName, None, Val)) in ParseDeclaration()
2881 bool TGParser::ParseTemplateArgList(Record *CurRec) { in ParseTemplateArgList() argument
2885 Record *TheRecToAddTo = CurRec ? CurRec : &CurMultiClass->Rec; in ParseTemplateArgList()
2888 Init *TemplArg = ParseDeclaration(CurRec, true/*templateargs*/); in ParseTemplateArgList()
2897 TemplArg = ParseDeclaration(CurRec, true/*templateargs*/); in ParseTemplateArgList()
2920 bool TGParser::ParseBodyItem(Record *CurRec) { in ParseBodyItem() argument
2922 return ParseAssert(nullptr, CurRec); in ParseBodyItem()
2928 if (!ParseDeclaration(CurRec, false)) in ParseBodyItem()
2952 RecordVal *Field = CurRec->getValue(FieldName); in ParseBodyItem()
2963 Init *Val = ParseValue(CurRec, Type); in ParseBodyItem()
2969 return SetValue(CurRec, IdLoc, FieldName, BitList, Val); in ParseBodyItem()
2979 bool TGParser::ParseBody(Record *CurRec) { in ParseBody() argument
2991 if (ParseBodyItem(CurRec)) in ParseBody()
3011 bool TGParser::ApplyLetStack(Record *CurRec) { in ApplyLetStack() argument
3014 if (SetValue(CurRec, LR.Loc, LR.Name, LR.Bits, LR.Value)) in ApplyLetStack()
3045 bool TGParser::ParseObjectBody(Record *CurRec) { in ParseObjectBody() argument
3050 SubClassReference SubClass = ParseSubClassReference(CurRec, false); in ParseObjectBody()
3056 if (AddSubClass(CurRec, SubClass)) in ParseObjectBody()
3061 SubClass = ParseSubClassReference(CurRec, false); in ParseObjectBody()
3065 if (ApplyLetStack(CurRec)) in ParseObjectBody()
3068 return ParseBody(CurRec); in ParseObjectBody()
3082 std::unique_ptr<Record> CurRec; in ParseDef() local
3088 CurRec = std::make_unique<Record>(Records.getNewAnonymousName(), DefLoc, Records, in ParseDef()
3091 CurRec = std::make_unique<Record>(Name, DefLoc, Records); in ParseDef()
3093 if (ParseObjectBody(CurRec.get())) in ParseDef()
3096 return addEntry(std::move(CurRec)); in ParseDef()
3346 bool TGParser::ParseAssert(MultiClass *CurMultiClass, Record *CurRec) { in ParseAssert() argument
3351 Init *Condition = ParseValue(CurRec); in ParseAssert()
3360 Init *Message = ParseValue(CurRec); in ParseAssert()
3367 if (CurRec) in ParseAssert()
3368 CurRec->addAssertion(ConditionLoc, Condition, Message); in ParseAssert()
3386 Record *CurRec = Records.getClass(Lex.getCurStrVal()); in ParseClass() local
3387 if (CurRec) { in ParseClass()
3389 if (!CurRec->getValues().empty() || in ParseClass()
3390 !CurRec->getSuperClasses().empty() || in ParseClass()
3391 !CurRec->getTemplateArgs().empty()) in ParseClass()
3392 return TokError("Class '" + CurRec->getNameInitAsString() + in ParseClass()
3395 CurRec->updateClassLoc(Lex.getLoc()); in ParseClass()
3401 CurRec = NewRec.get(); in ParseClass()
3408 if (ParseTemplateArgList(CurRec)) in ParseClass()
3411 if (ParseObjectBody(CurRec)) in ParseClass()
3415 CurRec->checkUnusedTemplateArgs(); in ParseClass()