Lines Matching refs:CurRec
63 bool TGParser::AddValue(Record *CurRec, SMLoc Loc, const RecordVal &RV) { in AddValue() argument
64 if (CurRec == 0) in AddValue()
65 CurRec = &CurMultiClass->Rec; in AddValue()
67 if (RecordVal *ERV = CurRec->getValue(RV.getName())) { in AddValue()
75 CurRec->addValue(RV); in AddValue()
82 bool TGParser::SetValue(Record *CurRec, SMLoc Loc, const std::string &ValName, in SetValue() argument
86 if (CurRec == 0) CurRec = &CurMultiClass->Rec; in SetValue()
88 RecordVal *RV = CurRec->getValue(ValName); in SetValue()
146 bool TGParser::AddSubClass(Record *CurRec, SubClassReference &SubClass) { in AddSubClass() argument
151 if (AddValue(CurRec, SubClass.RefLoc, Vals[i])) in AddSubClass()
165 if (SetValue(CurRec, SubClass.RefLoc, TArgs[i], std::vector<unsigned>(), in AddSubClass()
170 CurRec->resolveReferencesTo(CurRec->getValue(TArgs[i])); in AddSubClass()
173 CurRec->removeValue(TArgs[i]); in AddSubClass()
175 } else if (!CurRec->getValue(TArgs[i])->getValue()->isComplete()) { in AddSubClass()
186 if (CurRec->isSubClassOf(SCs[i])) in AddSubClass()
189 CurRec->addSuperClass(SCs[i]); in AddSubClass()
192 if (CurRec->isSubClassOf(SC)) in AddSubClass()
195 CurRec->addSuperClass(SC); in AddSubClass()
205 Record *CurRec = &CurMC->Rec; in AddSubMultiClass() local
207 const std::vector<RecordVal> &MCVals = CurRec->getValues(); in AddSubMultiClass()
212 if (AddValue(CurRec, SubMultiClass.RefLoc, SMCVals[i])) in AddSubMultiClass()
247 if (SetValue(CurRec, SubMultiClass.RefLoc, SMCTArgs[i], in AddSubMultiClass()
253 CurRec->resolveReferencesTo(CurRec->getValue(SMCTArgs[i])); in AddSubMultiClass()
256 CurRec->removeValue(SMCTArgs[i]); in AddSubMultiClass()
278 } else if (!CurRec->getValue(SMCTArgs[i])->getValue()->isComplete()) { in AddSubMultiClass()
381 ParseSubClassReference(Record *CurRec, bool isDefm) { in ParseSubClassReference() argument
402 Result.TemplateArgs = ParseValueList(CurRec, Result.Rec); in ParseSubClassReference()
636 Init *TGParser::ParseIDValue(Record *CurRec) { in ParseIDValue() argument
641 return ParseIDValue(CurRec, Name, Loc); in ParseIDValue()
646 Init *TGParser::ParseIDValue(Record *CurRec, in ParseIDValue() argument
648 if (CurRec) { in ParseIDValue()
649 if (const RecordVal *RV = CurRec->getValue(Name)) in ParseIDValue()
652 std::string TemplateArgName = CurRec->getName()+":"+Name; in ParseIDValue()
653 if (CurRec->isTemplateArg(TemplateArgName)) { in ParseIDValue()
654 const RecordVal *RV = CurRec->getValue(TemplateArgName); in ParseIDValue()
680 Init *TGParser::ParseOperation(Record *CurRec) { in ParseOperation() argument
727 Init *LHS = ParseValue(CurRec); in ParseOperation()
793 return (new UnOpInit(Code, LHS, Type))->Fold(CurRec, CurMultiClass); in ParseOperation()
830 InitList.push_back(ParseValue(CurRec)); in ParseOperation()
836 InitList.push_back(ParseValue(CurRec)); in ParseOperation()
852 ->Fold(CurRec, CurMultiClass); in ParseOperation()
859 ->Fold(CurRec, CurMultiClass); in ParseOperation()
891 Init *LHS = ParseValue(CurRec); in ParseOperation()
900 Init *MHS = ParseValue(CurRec); in ParseOperation()
909 Init *RHS = ParseValue(CurRec); in ParseOperation()
985 return (new TernOpInit(Code, LHS, MHS, RHS, Type))->Fold(CurRec, in ParseOperation()
1041 Init *TGParser::ParseSimpleValue(Record *CurRec, RecTy *ItemType) { in ParseSimpleValue() argument
1071 return ParseIDValue(CurRec, Name, NameLoc); // Value ::= IDValue in ParseSimpleValue()
1088 std::vector<Init*> ValueList = ParseValueList(CurRec, Class); in ParseSimpleValue()
1121 Vals = ParseValueList(CurRec); in ParseSimpleValue()
1162 Vals = ParseValueList(CurRec, 0, in ParseSimpleValue()
1248 Init *Operator = ParseValue(CurRec); in ParseSimpleValue()
1264 DagArgs = ParseDagArgList(CurRec); in ParseSimpleValue()
1290 return ParseOperation(CurRec); in ParseSimpleValue()
1304 Init *TGParser::ParseValue(Record *CurRec, RecTy *ItemType) { in ParseValue() argument
1305 Init *Result = ParseSimpleValue(CurRec, ItemType); in ParseValue()
1376 TGParser::ParseDagArgList(Record *CurRec) { in ParseDagArgList() argument
1380 Init *Val = ParseValue(CurRec); in ParseDagArgList()
1410 std::vector<Init*> TGParser::ParseValueList(Record *CurRec, Record *ArgsRec, in ParseValueList() argument
1422 Result.push_back(ParseValue(CurRec, ItemType)); in ParseValueList()
1439 Result.push_back(ParseValue(CurRec, ItemType)); in ParseValueList()
1457 std::string TGParser::ParseDeclaration(Record *CurRec, in ParseDeclaration() argument
1476 if (CurRec) { in ParseDeclaration()
1477 DeclName = CurRec->getName() + ":" + DeclName; in ParseDeclaration()
1486 if (AddValue(CurRec, IdLoc, RecordVal(DeclName, Type, HasField))) in ParseDeclaration()
1493 Init *Val = ParseValue(CurRec, Type); in ParseDeclaration()
1495 SetValue(CurRec, ValLoc, DeclName, std::vector<unsigned>(), Val)) in ParseDeclaration()
1509 bool TGParser::ParseTemplateArgList(Record *CurRec) { in ParseTemplateArgList() argument
1513 Record *TheRecToAddTo = CurRec ? CurRec : &CurMultiClass->Rec; in ParseTemplateArgList()
1516 std::string TemplArg = ParseDeclaration(CurRec, true/*templateargs*/); in ParseTemplateArgList()
1526 TemplArg = ParseDeclaration(CurRec, true/*templateargs*/); in ParseTemplateArgList()
1543 bool TGParser::ParseBodyItem(Record *CurRec) { in ParseBodyItem() argument
1545 if (ParseDeclaration(CurRec, false).empty()) in ParseBodyItem()
1571 RecordVal *Field = CurRec->getValue(FieldName); in ParseBodyItem()
1577 Init *Val = ParseValue(CurRec, Type); in ParseBodyItem()
1584 return SetValue(CurRec, IdLoc, FieldName, BitList, Val); in ParseBodyItem()
1594 bool TGParser::ParseBody(Record *CurRec) { in ParseBody() argument
1607 if (ParseBodyItem(CurRec)) in ParseBody()
1624 bool TGParser::ParseObjectBody(Record *CurRec) { in ParseObjectBody() argument
1630 SubClassReference SubClass = ParseSubClassReference(CurRec, false); in ParseObjectBody()
1636 if (AddSubClass(CurRec, SubClass)) in ParseObjectBody()
1641 SubClass = ParseSubClassReference(CurRec, false); in ParseObjectBody()
1648 if (SetValue(CurRec, LetStack[i][j].Loc, LetStack[i][j].Name, in ParseObjectBody()
1652 return ParseBody(CurRec); in ParseObjectBody()
1666 Record *CurRec = new Record(ParseObjectName(), DefLoc, Records); in ParseDef() local
1672 if (Records.getDef(CurRec->getName())) { in ParseDef()
1673 Error(DefLoc, "def '" + CurRec->getName() + "' already defined"); in ParseDef()
1676 Records.addDef(CurRec); in ParseDef()
1680 if (CurMultiClass->DefPrototypes[i]->getName() == CurRec->getName()) { in ParseDef()
1681 Error(DefLoc, "def '" + CurRec->getName() + in ParseDef()
1685 CurMultiClass->DefPrototypes.push_back(CurRec); in ParseDef()
1688 if (ParseObjectBody(CurRec)) in ParseDef()
1692 CurRec->resolveReferences(); in ParseDef()
1695 assert(CurRec->getTemplateArgs().empty() && "How'd this get template args?"); in ParseDef()
1705 CurRec->addValue(*RV); in ParseDef()
1724 Record *CurRec = Records.getClass(Lex.getCurStrVal()); in ParseClass() local
1725 if (CurRec) { in ParseClass()
1727 if (!CurRec->getValues().empty() || in ParseClass()
1728 !CurRec->getSuperClasses().empty() || in ParseClass()
1729 !CurRec->getTemplateArgs().empty()) in ParseClass()
1730 return TokError("Class '" + CurRec->getName() + "' already defined"); in ParseClass()
1733 CurRec = new Record(Lex.getCurStrVal(), Lex.getLoc(), Records); in ParseClass()
1734 Records.addClass(CurRec); in ParseClass()
1740 if (ParseTemplateArgList(CurRec)) in ParseClass()
1744 return ParseObjectBody(CurRec); in ParseClass()
1980 Record *CurRec = new Record(DefName, DefmPrefixLoc, Records); in ParseDefm() local
1985 AddSubClass(CurRec, Ref); in ParseDefm()
1993 if (SetValue(CurRec, DefmPrefixLoc, TArgs[i], std::vector<unsigned>(), in ParseDefm()
1998 CurRec->resolveReferencesTo(CurRec->getValue(TArgs[i])); in ParseDefm()
2001 CurRec->removeValue(TArgs[i]); in ParseDefm()
2003 } else if (!CurRec->getValue(TArgs[i])->getValue()->isComplete()) { in ParseDefm()
2014 if (SetValue(CurRec, LetStack[i][j].Loc, LetStack[i][j].Name, in ParseDefm()
2021 if (Records.getDef(CurRec->getName())) in ParseDefm()
2022 return Error(DefmPrefixLoc, "def '" + CurRec->getName() + in ParseDefm()
2032 if (CurMultiClass->DefPrototypes[i]->getName() == CurRec->getName()) { in ParseDefm()
2033 Error(DefmPrefixLoc, "defm '" + CurRec->getName() + in ParseDefm()
2038 CurMultiClass->DefPrototypes.push_back(CurRec); in ParseDefm()
2047 CurRec->addValue(*RV); in ParseDefm()
2050 Records.addDef(CurRec); in ParseDefm()
2053 NewRecDefs.push_back(CurRec); in ParseDefm()
2082 Record *CurRec = NewRecDefs[i]; in ParseDefm() local
2085 if (AddSubClass(CurRec, SubClass)) in ParseDefm()
2091 if (SetValue(CurRec, LetStack[i][j].Loc, LetStack[i][j].Name, in ParseDefm()