@@ -34,7 +34,7 @@ namespace llvm {
34
34
35
35
struct SubClassReference {
36
36
SMRange RefRange;
37
- Record *Rec = nullptr ;
37
+ const Record *Rec = nullptr ;
38
38
SmallVector<const ArgumentInit *, 4 > TemplateArgs;
39
39
40
40
SubClassReference () = default ;
@@ -110,7 +110,7 @@ static void checkConcrete(Record &R) {
110
110
111
111
// / Return an Init with a qualifier prefix referring
112
112
// / 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) {
114
114
RecordKeeper &RK = CurRec.getRecords ();
115
115
const Init *NewName = BinOpInit::getStrConcat (
116
116
CurRec.getNameInit (),
@@ -127,7 +127,7 @@ static const Init *QualifyName(MultiClass *MC, const Init *Name) {
127
127
}
128
128
129
129
// / 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) {
131
131
return QualifyName (Rec, StringInit::get (Rec.getRecords (), " NAME" ));
132
132
}
133
133
@@ -298,7 +298,7 @@ bool TGParser::SetValue(Record *CurRec, SMLoc Loc, const Init *ValName,
298
298
// / AddSubClass - Add SubClass as a subclass to CurRec, resolving its template
299
299
// / args as SubClass's template arguments.
300
300
bool TGParser::AddSubClass (Record *CurRec, SubClassReference &SubClass) {
301
- Record *SC = SubClass.Rec ;
301
+ const Record *SC = SubClass.Rec ;
302
302
MapResolver R (CurRec);
303
303
304
304
// 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) {
588
588
return false ;
589
589
}
590
590
591
- bool TGParser::resolveArguments (Record *Rec,
591
+ bool TGParser::resolveArguments (const Record *Rec,
592
592
ArrayRef<const ArgumentInit *> ArgValues,
593
593
SMLoc Loc, ArgValueHandler ArgValueHandler) {
594
594
ArrayRef<const Init *> ArgNames = Rec->getTemplateArgs ();
@@ -632,7 +632,7 @@ bool TGParser::resolveArguments(Record *Rec,
632
632
633
633
// / Resolve the arguments of class and set them to MapResolver.
634
634
// / Returns true if failed.
635
- bool TGParser::resolveArgumentsOfClass (MapResolver &R, Record *Rec,
635
+ bool TGParser::resolveArgumentsOfClass (MapResolver &R, const Record *Rec,
636
636
ArrayRef<const ArgumentInit *> ArgValues,
637
637
SMLoc Loc) {
638
638
return resolveArguments (
@@ -710,13 +710,13 @@ const Init *TGParser::ParseObjectName(MultiClass *CurMultiClass) {
710
710
// /
711
711
// / ClassID ::= ID
712
712
// /
713
- Record *TGParser::ParseClassID () {
713
+ const Record *TGParser::ParseClassID () {
714
714
if (Lex.getCode () != tgtok::Id) {
715
715
TokError (" expected name for ClassID" );
716
716
return nullptr ;
717
717
}
718
718
719
- Record *Result = Records.getClass (Lex.getCurStrVal ());
719
+ const Record *Result = Records.getClass (Lex.getCurStrVal ());
720
720
if (!Result) {
721
721
std::string Msg (" Couldn't find class '" + Lex.getCurStrVal () + " '" );
722
722
if (MultiClasses[Lex.getCurStrVal ()].get ())
@@ -2708,7 +2708,7 @@ const Init *TGParser::ParseSimpleValue(Record *CurRec, const RecTy *ItemType,
2708
2708
// Value ::= CLASSID '<' ArgValueList '>' (CLASSID has been consumed)
2709
2709
// This is supposed to synthesize a new anonymous definition, deriving
2710
2710
// 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 ());
2712
2712
if (!Class) {
2713
2713
Error (NameLoc.Start ,
2714
2714
" Expected a class name, got '" + Name->getValue () + " '" );
@@ -3196,7 +3196,7 @@ void TGParser::ParseValueList(SmallVectorImpl<const Init *> &Result,
3196
3196
// NamedArgValueList ::= [NameValue '=' Value {',' NameValue '=' Value}*]
3197
3197
bool TGParser::ParseTemplateArgValueList (
3198
3198
SmallVectorImpl<const ArgumentInit *> &Result, Record *CurRec,
3199
- Record *ArgsRec) {
3199
+ const Record *ArgsRec) {
3200
3200
assert (Result.empty () && " Result vector is not empty" );
3201
3201
ArrayRef<const Init *> TArgs = ArgsRec->getTemplateArgs ();
3202
3202
@@ -3990,7 +3990,7 @@ bool TGParser::ParseClass() {
3990
3990
return TokError (" expected class name after 'class' keyword" );
3991
3991
3992
3992
const std::string &Name = Lex.getCurStrVal ();
3993
- Record *CurRec = Records.getClass (Name);
3993
+ Record *CurRec = const_cast <Record *>( Records.getClass (Name) );
3994
3994
if (CurRec) {
3995
3995
// If the body was previously defined, this is an error.
3996
3996
if (!CurRec->getValues ().empty () ||
@@ -4411,7 +4411,8 @@ bool TGParser::ParseFile() {
4411
4411
// If necessary, replace an argument with a cast to the required type.
4412
4412
// The argument count has already been checked.
4413
4413
bool TGParser::CheckTemplateArgValues (
4414
- SmallVectorImpl<const ArgumentInit *> &Values, SMLoc Loc, Record *ArgsRec) {
4414
+ SmallVectorImpl<const ArgumentInit *> &Values, SMLoc Loc,
4415
+ const Record *ArgsRec) {
4415
4416
ArrayRef<const Init *> TArgs = ArgsRec->getTemplateArgs ();
4416
4417
4417
4418
for (const ArgumentInit *&Value : Values) {
@@ -4421,7 +4422,7 @@ bool TGParser::CheckTemplateArgValues(
4421
4422
if (Value->isNamed ())
4422
4423
ArgName = Value->getName ();
4423
4424
4424
- RecordVal *Arg = ArgsRec->getValue (ArgName);
4425
+ const RecordVal *Arg = ArgsRec->getValue (ArgName);
4425
4426
const RecTy *ArgType = Arg->getType ();
4426
4427
4427
4428
if (const auto *ArgValue = dyn_cast<TypedInit>(Value->getValue ())) {
0 commit comments