Generalize the previous binary operator support and add a string concatenation
operation. This implements Regression/TableGen/strconcat.td.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27312 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/utils/TableGen/FileParser.y b/utils/TableGen/FileParser.y
index 11fda1d..aa86139 100644
--- a/utils/TableGen/FileParser.y
+++ b/utils/TableGen/FileParser.y
@@ -200,7 +200,7 @@
};
%token INT BIT STRING BITS LIST CODE DAG CLASS DEF FIELD LET IN
-%token SHLTOK SRATOK SRLTOK
+%token SHLTOK SRATOK SRLTOK STRCONCATTOK
%token <IntVal> INTVAL
%token <StrVal> ID VARNAME STRVAL CODEFRAGMENT
@@ -352,23 +352,13 @@
}
delete $3;
} | SHLTOK '(' Value ',' Value ')' {
- $$ = $3->getBinaryOp(Init::SHL, $5);
- if ($$ == 0) {
- err() << "Cannot shift values '" << *$3 << "' and '" << *$5 << "'!\n";
- exit(1);
- }
+ $$ = (new BinOpInit(BinOpInit::SHL, $3, $5))->Fold();
} | SRATOK '(' Value ',' Value ')' {
- $$ = $3->getBinaryOp(Init::SRA, $5);
- if ($$ == 0) {
- err() << "Cannot shift values '" << *$3 << "' and '" << *$5 << "'!\n";
- exit(1);
- }
+ $$ = (new BinOpInit(BinOpInit::SRA, $3, $5))->Fold();
} | SRLTOK '(' Value ',' Value ')' {
- $$ = $3->getBinaryOp(Init::SRL, $5);
- if ($$ == 0) {
- err() << "Cannot shift values '" << *$3 << "' and '" << *$5 << "'!\n";
- exit(1);
- }
+ $$ = (new BinOpInit(BinOpInit::SRL, $3, $5))->Fold();
+ } | STRCONCATTOK '(' Value ',' Value ')' {
+ $$ = (new BinOpInit(BinOpInit::STRCONCAT, $3, $5))->Fold();
};
OptVarName : /* empty */ {