@@ -34,7 +34,7 @@ namespace llvm {
3434
3535struct SubClassReference {
3636 SMRange RefRange;
37- Record *Rec = nullptr ;
37+ const Record *Rec = nullptr ;
3838 SmallVector<const ArgumentInit *, 4 > TemplateArgs;
3939
4040 SubClassReference () = default ;
@@ -110,7 +110,7 @@ static void checkConcrete(Record &R) {
110110
111111// / Return an Init with a qualifier prefix referring
112112// / to CurRec's name.
113- static const Init *QualifyName (Record &CurRec, const Init *Name) {
113+ static const Init *QualifyName (const Record &CurRec, const Init *Name) {
114114 RecordKeeper &RK = CurRec.getRecords ();
115115 const Init *NewName = BinOpInit::getStrConcat (
116116 CurRec.getNameInit (),
@@ -127,7 +127,7 @@ static const Init *QualifyName(MultiClass *MC, const Init *Name) {
127127}
128128
129129// / Return the qualified version of the implicit 'NAME' template argument.
130- static const Init *QualifiedNameOfImplicitName (Record &Rec) {
130+ static const Init *QualifiedNameOfImplicitName (const Record &Rec) {
131131 return QualifyName (Rec, StringInit::get (Rec.getRecords (), " NAME" ));
132132}
133133
@@ -298,7 +298,7 @@ bool TGParser::SetValue(Record *CurRec, SMLoc Loc, const Init *ValName,
298298// / AddSubClass - Add SubClass as a subclass to CurRec, resolving its template
299299// / args as SubClass's template arguments.
300300bool TGParser::AddSubClass (Record *CurRec, SubClassReference &SubClass) {
301- Record *SC = SubClass.Rec ;
301+ const Record *SC = SubClass.Rec ;
302302 MapResolver R (CurRec);
303303
304304 // Loop over all the subclass record's fields. Add regular fields to the new
@@ -588,7 +588,7 @@ bool TGParser::addDefOne(std::unique_ptr<Record> Rec) {
588588 return false ;
589589}
590590
591- bool TGParser::resolveArguments (Record *Rec,
591+ bool TGParser::resolveArguments (const Record *Rec,
592592 ArrayRef<const ArgumentInit *> ArgValues,
593593 SMLoc Loc, ArgValueHandler ArgValueHandler) {
594594 ArrayRef<const Init *> ArgNames = Rec->getTemplateArgs ();
@@ -632,7 +632,7 @@ bool TGParser::resolveArguments(Record *Rec,
632632
633633// / Resolve the arguments of class and set them to MapResolver.
634634// / Returns true if failed.
635- bool TGParser::resolveArgumentsOfClass (MapResolver &R, Record *Rec,
635+ bool TGParser::resolveArgumentsOfClass (MapResolver &R, const Record *Rec,
636636 ArrayRef<const ArgumentInit *> ArgValues,
637637 SMLoc Loc) {
638638 return resolveArguments (
@@ -710,13 +710,13 @@ const Init *TGParser::ParseObjectName(MultiClass *CurMultiClass) {
710710// /
711711// / ClassID ::= ID
712712// /
713- Record *TGParser::ParseClassID () {
713+ const Record *TGParser::ParseClassID () {
714714 if (Lex.getCode () != tgtok::Id) {
715715 TokError (" expected name for ClassID" );
716716 return nullptr ;
717717 }
718718
719- Record *Result = Records.getClass (Lex.getCurStrVal ());
719+ const Record *Result = Records.getClass (Lex.getCurStrVal ());
720720 if (!Result) {
721721 std::string Msg (" Couldn't find class '" + Lex.getCurStrVal () + " '" );
722722 if (MultiClasses[Lex.getCurStrVal ()].get ())
@@ -2708,7 +2708,7 @@ const Init *TGParser::ParseSimpleValue(Record *CurRec, const RecTy *ItemType,
27082708 // Value ::= CLASSID '<' ArgValueList '>' (CLASSID has been consumed)
27092709 // This is supposed to synthesize a new anonymous definition, deriving
27102710 // from the class with the template arguments, but no body.
2711- Record *Class = Records.getClass (Name->getValue ());
2711+ const Record *Class = Records.getClass (Name->getValue ());
27122712 if (!Class) {
27132713 Error (NameLoc.Start ,
27142714 " Expected a class name, got '" + Name->getValue () + " '" );
@@ -3196,7 +3196,7 @@ void TGParser::ParseValueList(SmallVectorImpl<const Init *> &Result,
31963196// NamedArgValueList ::= [NameValue '=' Value {',' NameValue '=' Value}*]
31973197bool TGParser::ParseTemplateArgValueList (
31983198 SmallVectorImpl<const ArgumentInit *> &Result, Record *CurRec,
3199- Record *ArgsRec) {
3199+ const Record *ArgsRec) {
32003200 assert (Result.empty () && " Result vector is not empty" );
32013201 ArrayRef<const Init *> TArgs = ArgsRec->getTemplateArgs ();
32023202
@@ -3990,7 +3990,7 @@ bool TGParser::ParseClass() {
39903990 return TokError (" expected class name after 'class' keyword" );
39913991
39923992 const std::string &Name = Lex.getCurStrVal ();
3993- Record *CurRec = Records.getClass (Name);
3993+ Record *CurRec = const_cast <Record *>( Records.getClass (Name) );
39943994 if (CurRec) {
39953995 // If the body was previously defined, this is an error.
39963996 if (!CurRec->getValues ().empty () ||
@@ -4411,7 +4411,8 @@ bool TGParser::ParseFile() {
44114411// If necessary, replace an argument with a cast to the required type.
44124412// The argument count has already been checked.
44134413bool TGParser::CheckTemplateArgValues (
4414- SmallVectorImpl<const ArgumentInit *> &Values, SMLoc Loc, Record *ArgsRec) {
4414+ SmallVectorImpl<const ArgumentInit *> &Values, SMLoc Loc,
4415+ const Record *ArgsRec) {
44154416 ArrayRef<const Init *> TArgs = ArgsRec->getTemplateArgs ();
44164417
44174418 for (const ArgumentInit *&Value : Values) {
@@ -4421,7 +4422,7 @@ bool TGParser::CheckTemplateArgValues(
44214422 if (Value->isNamed ())
44224423 ArgName = Value->getName ();
44234424
4424- RecordVal *Arg = ArgsRec->getValue (ArgName);
4425+ const RecordVal *Arg = ArgsRec->getValue (ArgName);
44254426 const RecTy *ArgType = Arg->getType ();
44264427
44274428 if (const auto *ArgValue = dyn_cast<TypedInit>(Value->getValue ())) {
0 commit comments