1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 12:02:58 +02:00

Parse DAG patterns

llvm-svn: 7577
This commit is contained in:
Chris Lattner 2003-08-04 20:44:43 +00:00
parent 3aa9da1f7f
commit 11ad73f47e

View File

@ -161,6 +161,7 @@ static void addSubClass(Record *SC, const std::vector<Init*> &TemplateArgs) {
int IntVal;
RecTy *Ty;
Init *Initializer;
std::vector<Init*> *DagValueList;
std::vector<Init*> *FieldList;
std::vector<unsigned>*BitList;
Record *Rec;
@ -179,6 +180,7 @@ static void addSubClass(Record *SC, const std::vector<Init*> &TemplateArgs) {
%type <SubClassList> ClassList ClassListNE
%type <IntVal> OptPrefix
%type <Initializer> Value OptValue
%type <DagValueList> DagArgList DagArgListNE
%type <FieldList> ValueList ValueListNE
%type <BitList> BitList OptBitList RBitList
%type <StrVal> Declaration OptID
@ -270,8 +272,30 @@ Value : INTVAL {
}
$$ = new FieldInit($1, *$3);
delete $3;
} | '(' ID DagArgList ')' {
Record *D = Records.getDef(*$2);
if (D == 0) {
err() << "Invalid def '" << *$2 << "'!\n";
abort();
}
$$ = new DagInit(D, *$3);
delete $2; delete $3;
};
DagArgListNE : Value {
$$ = new std::vector<Init*>();
$$->push_back($1);
}
| DagArgListNE ',' Value {
$1->push_back($3);
};
DagArgList : /*empty*/ {
$$ = new std::vector<Init*>();
}
| DagArgListNE { $$ = $1; };
RBitList : INTVAL {
$$ = new std::vector<unsigned>();
$$->push_back($1);