aboutsummaryrefslogtreecommitdiffstats
path: root/utils/TableGen/FileParser.y.cvs
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-03-30 22:51:12 +0000
committerChris Lattner <sabre@nondot.org>2006-03-30 22:51:12 +0000
commit8177969be0f6d7dafa60dee1b36af0aaca3c2cc2 (patch)
tree77361df9e60ef3e57afc0282e1b19f2c2241c2bc /utils/TableGen/FileParser.y.cvs
parent8c06318821e4febb3a7f1afbab72dae362f1bf5f (diff)
downloadexternal_llvm-8177969be0f6d7dafa60dee1b36af0aaca3c2cc2.zip
external_llvm-8177969be0f6d7dafa60dee1b36af0aaca3c2cc2.tar.gz
external_llvm-8177969be0f6d7dafa60dee1b36af0aaca3c2cc2.tar.bz2
regenerate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27264 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/FileParser.y.cvs')
-rw-r--r--utils/TableGen/FileParser.y.cvs49
1 files changed, 24 insertions, 25 deletions
diff --git a/utils/TableGen/FileParser.y.cvs b/utils/TableGen/FileParser.y.cvs
index 28bb7b3..11fda1d 100644
--- a/utils/TableGen/FileParser.y.cvs
+++ b/utils/TableGen/FileParser.y.cvs
@@ -210,7 +210,7 @@ using namespace llvm;
%type <SubClassRef> SubClassRef
%type <SubClassList> ClassList ClassListNE
%type <IntVal> OptPrefix
-%type <Initializer> Value OptValue
+%type <Initializer> Value OptValue IDValue
%type <DagValueList> DagArgList DagArgListNE
%type <FieldList> ValueList ValueListNE
%type <BitList> BitList OptBitList RBitList
@@ -253,7 +253,26 @@ OptPrefix : /*empty*/ { $$ = 0; } | FIELD { $$ = 1; };
OptValue : /*empty*/ { $$ = 0; } | '=' Value { $$ = $2; };
-Value : INTVAL {
+IDValue : ID {
+ if (const RecordVal *RV = (CurRec ? CurRec->getValue(*$1) : 0)) {
+ $$ = new VarInit(*$1, RV->getType());
+ } else if (CurRec && CurRec->isTemplateArg(CurRec->getName()+":"+*$1)) {
+ const RecordVal *RV = CurRec->getValue(CurRec->getName()+":"+*$1);
+ assert(RV && "Template arg doesn't exist??");
+ $$ = new VarInit(CurRec->getName()+":"+*$1, RV->getType());
+ } else if (Record *D = Records.getDef(*$1)) {
+ $$ = new DefInit(D);
+ } else {
+ err() << "Variable not defined: '" << *$1 << "'!\n";
+ exit(1);
+ }
+
+ delete $1;
+};
+
+Value : IDValue {
+ $$ = $1;
+ } | INTVAL {
$$ = new IntInit($1);
} | STRVAL {
$$ = new StringInit(*$1);
@@ -304,21 +323,6 @@ Value : INTVAL {
// Restore the old CurRec
CurRec = OldRec;
- } | ID {
- if (const RecordVal *RV = (CurRec ? CurRec->getValue(*$1) : 0)) {
- $$ = new VarInit(*$1, RV->getType());
- } else if (CurRec && CurRec->isTemplateArg(CurRec->getName()+":"+*$1)) {
- const RecordVal *RV = CurRec->getValue(CurRec->getName()+":"+*$1);
- assert(RV && "Template arg doesn't exist??");
- $$ = new VarInit(CurRec->getName()+":"+*$1, RV->getType());
- } else if (Record *D = Records.getDef(*$1)) {
- $$ = new DefInit(D);
- } else {
- err() << "Variable not defined: '" << *$1 << "'!\n";
- exit(1);
- }
-
- delete $1;
} | Value '{' BitList '}' {
$$ = $1->convertInitializerBitRange(*$3);
if ($$ == 0) {
@@ -336,14 +340,9 @@ Value : INTVAL {
}
$$ = new FieldInit($1, *$3);
delete $3;
- } | '(' ID DagArgList ')' {
- Record *D = Records.getDef(*$2);
- if (D == 0) {
- err() << "Invalid def '" << *$2 << "'!\n";
- exit(1);
- }
- $$ = new DagInit(D, *$3);
- delete $2; delete $3;
+ } | '(' IDValue DagArgList ')' {
+ $$ = new DagInit($2, *$3);
+ delete $3;
} | Value '[' BitList ']' {
std::reverse($3->begin(), $3->end());
$$ = $1->convertInitListSlice(*$3);