[llvm-commits] CVS: llvm/utils/TableGen/FileLexer.cpp.cvs FileLexer.l.cvs FileParser.cpp.cvs FileParser.h.cvs FileParser.y.cvs

Chris Lattner lattner at cs.uiuc.edu
Fri Mar 31 13:54:23 PST 2006



Changes in directory llvm/utils/TableGen:

FileLexer.cpp.cvs updated: 1.4 -> 1.5
FileLexer.l.cvs updated: 1.3 -> 1.4
FileParser.cpp.cvs updated: 1.2 -> 1.3
FileParser.h.cvs updated: 1.2 -> 1.3
FileParser.y.cvs updated: 1.2 -> 1.3
---
Log message:

regenerate


---
Diffs of the changes:  (+418 -420)

 FileLexer.cpp.cvs  |  260 +++++++++++++------------
 FileLexer.l.cvs    |    1 
 FileParser.cpp.cvs |  533 ++++++++++++++++++++++++++---------------------------
 FileParser.h.cvs   |   11 -
 FileParser.y.cvs   |   22 --
 5 files changed, 418 insertions(+), 409 deletions(-)


Index: llvm/utils/TableGen/FileLexer.cpp.cvs
diff -u llvm/utils/TableGen/FileLexer.cpp.cvs:1.4 llvm/utils/TableGen/FileLexer.cpp.cvs:1.5
--- llvm/utils/TableGen/FileLexer.cpp.cvs:1.4	Fri Mar  3 13:34:28 2006
+++ llvm/utils/TableGen/FileLexer.cpp.cvs	Fri Mar 31 15:54:11 2006
@@ -21,7 +21,7 @@
 /* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
- * $Header: /var/cvs/llvm/llvm/utils/TableGen/FileLexer.cpp.cvs,v 1.4 2006/03/03 19:34:28 lattner Exp $
+ * $Header: /var/cvs/llvm/llvm/utils/TableGen/FileLexer.cpp.cvs,v 1.5 2006/03/31 21:54:11 lattner Exp $
  */
 
 #define FLEX_SCANNER
@@ -306,39 +306,40 @@
 	*yy_cp = '\0'; \
 	yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 31
-#define YY_END_OF_BUFFER 32
-static yyconst short int yy_acclist[129] =
+#define YY_NUM_RULES 32
+#define YY_END_OF_BUFFER 33
+static yyconst short int yy_acclist[130] =
     {   0,
-       25,   25,   32,   30,   31,   23,   30,   31,   23,   31,
-       30,   31,   30,   31,   30,   31,   30,   31,   30,   31,
-       22,   30,   31,   22,   30,   31,   19,   30,   31,   30,
-       31,   19,   30,   31,   19,   30,   31,   19,   30,   31,
-       19,   30,   31,   19,   30,   31,   19,   30,   31,   19,
-       30,   31,   25,   31,   26,   31,   28,   31,   23,   21,
-       20,   22,   24,    1,   19,   19,   19,   19,   19,   19,
-       19,   15,   19,   19,   19,   19,   25,   26,   26,   29,
-       28,   27,   28,   20,    1,   22,   22,    5,   19,   19,
-       19,   10,   19,   12,   19,   19,   19,    4,   19,   14,
-
-       19,   19,   19,   18,   16,   17,    3,    6,   19,   19,
-        9,   19,   19,   19,    8,   19,   19,   11,   19,   13,
-       19,   19,   19,   19,    7,   19,   19,    2
+       26,   26,   33,   31,   32,   24,   31,   32,   24,   32,
+       31,   32,   31,   32,   31,   32,   31,   32,   31,   32,
+       23,   31,   32,   23,   31,   32,   20,   31,   32,   31,
+       32,   20,   31,   32,   20,   31,   32,   20,   31,   32,
+       20,   31,   32,   20,   31,   32,   20,   31,   32,   20,
+       31,   32,   26,   32,   27,   32,   29,   32,   24,   22,
+       21,   23,   25,    1,   20,   20,   20,   20,   20,   20,
+       20,   15,   20,   20,   20,   20,   26,   27,   27,   30,
+       29,   28,   29,   21,    1,   23,   23,    5,   20,   20,
+       20,   10,   20,   12,   20,   20,   20,    4,   20,   14,
+
+       20,   20,   20,   18,   16,   17,    3,    6,   20,   20,
+        9,   20,   20,   20,    8,   20,   20,   11,   20,   13,
+       20,   20,   20,   20,    7,   20,   20,   19,    2
     } ;
 
-static yyconst short int yy_accept[101] =
+static yyconst short int yy_accept[109] =
     {   0,
         1,    1,    1,    2,    3,    4,    6,    9,   11,   13,
        15,   17,   19,   21,   24,   27,   30,   32,   35,   38,
        41,   44,   47,   50,   53,   55,   57,   59,   60,   60,
        60,   61,   62,   63,   64,   65,   65,   65,   66,   66,
        67,   68,   69,   70,   71,   72,   74,   75,   76,   77,
-       78,   79,   80,   81,   82,   83,   84,   84,   84,   85,
-       86,   87,   88,   88,   88,   90,   91,   92,   94,   96,
-       97,   98,  100,  102,  103,  104,  105,  106,  107,  107,
-      108,  110,  111,  113,  114,  115,  117,  118,  120,  122,
-      123,  124,  125,  127,  128,  128,  128,  128,  129,  129
+       78,   79,   80,   81,   82,   83,   84,   84,   84,   84,
+       85,   86,   87,   88,   88,   88,   90,   91,   92,   94,
+       96,   97,   98,  100,  102,  103,  104,  105,  106,  107,
+      107,  107,  108,  110,  111,  113,  114,  115,  117,  118,
+      118,  120,  122,  123,  124,  124,  125,  127,  127,  128,
 
+      128,  128,  128,  128,  129,  129,  130,  130
     } ;
 
 static yyconst int yy_ec[256] =
@@ -381,98 +382,100 @@
         6,    6,    6,    6,    1,    1
     } ;
 
-static yyconst short int yy_base[113] =
+static yyconst short int yy_base[121] =
     {   0,
-        0,    0,   29,   30,  199,  200,   39,   42,  167,  191,
-        0,   36,   42,   42,   45,    0,  161,  169,   33,   41,
-      168,  165,   42,  160,    0,   57,   61,   70,   45,  185,
-      200,    0,   66,  200,    0,   69,    0,    0,  154,  157,
-      170,  166,  162,  162,  162,   62,  151,  151,  151,    0,
-       75,   76,  200,   79,  200,   80,  153,   73,    0,    0,
-       81,    0,  143,  161,  146,  145,  153,    0,    0,  147,
-      146,    0,    0,  140,  145,  200,  200,  200,  134,  200,
-        0,  138,    0,  147,  134,    0,  138,    0,    0,  120,
-       97,   77,    0,   93,   95,   60,   45,  200,  200,  101,
+        0,    0,   29,   30,  207,  208,   39,   42,  175,  199,
+        0,   36,   42,   42,   45,    0,  169,  177,   33,   41,
+      176,  173,   42,  168,    0,   57,   61,   70,   45,  193,
+      208,    0,   67,  208,    0,   70,    0,    0,  162,  165,
+      178,  174,  170,  170,  170,   63,  159,  159,  159,    0,
+       76,   77,  208,   80,  208,   81,  161,   74,  157,    0,
+        0,   82,    0,  150,  168,  153,  152,  160,    0,    0,
+      154,  153,    0,    0,  147,  152,  208,  208,  208,  157,
+      140,  208,    0,  144,    0,  153,  140,    0,  144,  142,
+        0,    0,  149,  145,  140,  145,    0,  122,   94,  104,
 
-      107,  109,  112,  118,  124,  130,  133,  139,  142,  147,
-      153,  159
+       96,   68,   60,  208,   45,  208,  208,  102,  108,  110,
+      113,  119,  125,  131,  134,  140,  143,  148,  154,  160
     } ;
 
-static yyconst short int yy_def[113] =
+static yyconst short int yy_def[121] =
     {   0,
-       99,    1,  100,  100,   99,   99,   99,   99,   99,  101,
-      102,   99,   99,   99,   99,  103,   99,  103,  103,  103,
-      103,  103,  103,  103,  104,  105,  106,   99,   99,  101,
-       99,  107,   99,   99,  108,   99,  109,  103,  110,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  104,
-      105,  105,   99,  106,   99,  106,   99,   99,  107,  108,
-       99,  109,  110,  111,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,   99,   99,   99,  110,   99,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,   99,  112,  112,   99,    0,   99,
+      107,    1,  108,  108,  107,  107,  107,  107,  107,  109,
+      110,  107,  107,  107,  107,  111,  107,  111,  111,  111,
+      111,  111,  111,  111,  112,  113,  114,  107,  107,  109,
+      107,  115,  107,  107,  116,  107,  117,  111,  118,  111,
+      111,  111,  111,  111,  111,  111,  111,  111,  111,  112,
+      113,  113,  107,  114,  107,  114,  107,  107,  107,  115,
+      116,  107,  117,  118,  119,  111,  111,  111,  111,  111,
+      111,  111,  111,  111,  111,  111,  107,  107,  107,  107,
+      118,  107,  111,  111,  111,  111,  111,  111,  111,  107,
+      111,  111,  111,  111,  107,  111,  111,  107,  111,  107,
 
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99
+      107,  107,  120,  107,  120,  107,    0,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107
     } ;
 
-static yyconst short int yy_nxt[237] =
+static yyconst short int yy_nxt[245] =
     {   0,
         6,    7,    8,    7,    9,   10,   11,    6,   12,   13,
        14,   15,   15,   16,   16,   17,    6,   16,   18,   19,
        20,   16,   21,   16,   16,   22,   23,   16,   16,   16,
        24,   16,   16,   16,    6,    6,   26,   26,   27,   27,
        28,   28,   28,   28,   28,   28,   33,   33,   33,   34,
-       98,   35,   33,   33,   33,   33,   33,   33,   43,   41,
-       36,   42,   44,   47,   52,   98,   53,   48,   55,   57,
-       56,   28,   28,   28,   58,   37,   33,   33,   33,   61,
-       61,   71,   99,   52,   99,   53,   99,   99,   99,   56,
-       77,   61,   61,   72,   95,   95,   95,   95,   94,   78,
-
-       96,   25,   25,   25,   25,   25,   25,   30,   30,   30,
-       30,   30,   30,   32,   32,   38,   38,   38,   50,   50,
-       93,   50,   50,   50,   51,   51,   51,   51,   51,   51,
-       54,   54,   54,   54,   54,   54,   59,   59,   59,   60,
-       92,   60,   60,   60,   60,   62,   62,   63,   63,   63,
-       63,   63,   63,   79,   79,   79,   79,   79,   79,   97,
-       97,   97,   97,   97,   97,   91,   90,   89,   88,   64,
-       87,   86,   85,   84,   83,   82,   81,   80,   64,   76,
-       75,   74,   73,   70,   69,   68,   67,   66,   65,   64,
-       31,   49,   46,   45,   40,   39,   31,   29,   99,    5,
-
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99
+      106,   35,   33,   33,   33,   33,   33,   33,   43,   41,
+       36,   42,   44,   47,   52,  106,   53,   48,   55,   57,
+       56,   28,   28,   28,   58,   37,   59,   33,   33,   33,
+       62,   62,   72,  107,   52,  107,   53,  107,  107,  107,
+       56,   78,   62,   62,   73,  101,  101,  101,  101,  104,
+
+       79,  103,   25,   25,   25,   25,   25,   25,   30,   30,
+       30,   30,   30,   30,   32,   32,   38,   38,   38,   50,
+       50,  102,   50,   50,   50,   51,   51,   51,   51,   51,
+       51,   54,   54,   54,   54,   54,   54,   60,   60,   60,
+       61,  100,   61,   61,   61,   61,   63,   63,   64,   64,
+       64,   64,   64,   64,   81,   81,   81,   81,   81,   81,
+      105,  105,  105,  105,  105,  105,   99,   98,   97,   96,
+       95,   94,   93,   92,   91,   65,   90,   89,   88,   87,
+       86,   85,   84,   83,   82,   65,   80,   77,   76,   75,
+       74,   71,   70,   69,   68,   67,   66,   65,   31,   49,
+
+       46,   45,   40,   39,   31,   29,  107,    5,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      107,  107,  107,  107
     } ;
 
-static yyconst short int yy_chk[237] =
+static yyconst short int yy_chk[245] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    3,    4,    3,    4,
         7,    7,    7,    8,    8,    8,   12,   12,   12,   13,
-       97,   13,   14,   14,   14,   15,   15,   15,   20,   19,
-       14,   19,   20,   23,   26,   96,   26,   23,   27,   29,
-       27,   28,   28,   28,   29,   14,   33,   33,   33,   36,
-       36,   46,   51,   52,   51,   52,   54,   56,   54,   56,
-       58,   61,   61,   46,   94,   94,   95,   95,   92,   58,
-
-       95,  100,  100,  100,  100,  100,  100,  101,  101,  101,
-      101,  101,  101,  102,  102,  103,  103,  103,  104,  104,
-       91,  104,  104,  104,  105,  105,  105,  105,  105,  105,
-      106,  106,  106,  106,  106,  106,  107,  107,  107,  108,
-       90,  108,  108,  108,  108,  109,  109,  110,  110,  110,
-      110,  110,  110,  111,  111,  111,  111,  111,  111,  112,
-      112,  112,  112,  112,  112,   87,   85,   84,   82,   79,
-       75,   74,   71,   70,   67,   66,   65,   64,   63,   57,
-       49,   48,   47,   45,   44,   43,   42,   41,   40,   39,
-       30,   24,   22,   21,   18,   17,   10,    9,    5,   99,
-
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99
+      105,   13,   14,   14,   14,   15,   15,   15,   20,   19,
+       14,   19,   20,   23,   26,  103,   26,   23,   27,   29,
+       27,   28,   28,   28,   29,   14,   29,   33,   33,   33,
+       36,   36,   46,   51,   52,   51,   52,   54,   56,   54,
+       56,   58,   62,   62,   46,   99,   99,  101,  101,  102,
+
+       58,  101,  108,  108,  108,  108,  108,  108,  109,  109,
+      109,  109,  109,  109,  110,  110,  111,  111,  111,  112,
+      112,  100,  112,  112,  112,  113,  113,  113,  113,  113,
+      113,  114,  114,  114,  114,  114,  114,  115,  115,  115,
+      116,   98,  116,  116,  116,  116,  117,  117,  118,  118,
+      118,  118,  118,  118,  119,  119,  119,  119,  119,  119,
+      120,  120,  120,  120,  120,  120,   96,   95,   94,   93,
+       90,   89,   87,   86,   84,   81,   80,   76,   75,   72,
+       71,   68,   67,   66,   65,   64,   59,   57,   49,   48,
+       47,   45,   44,   43,   42,   41,   40,   39,   30,   24,
+
+       22,   21,   18,   17,   10,    9,    5,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      107,  107,  107,  107
     } ;
 
 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
@@ -648,7 +651,7 @@
 
 using namespace llvm;
 
-#line 652 "Lexer.cpp"
+#line 655 "Lexer.cpp"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -802,7 +805,7 @@
 #line 180 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
 
 
-#line 806 "Lexer.cpp"
+#line 809 "Lexer.cpp"
 
 	if ( yy_init )
 		{
@@ -850,14 +853,14 @@
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 100 )
+				if ( yy_current_state >= 108 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			*yy_state_ptr++ = yy_current_state;
 			++yy_cp;
 			}
-		while ( yy_current_state != 99 );
+		while ( yy_current_state != 107 );
 
 yy_find_action:
 		yy_current_state = *--yy_state_ptr;
@@ -986,77 +989,82 @@
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 207 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
+#line 205 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
+{ return STRCONCATTOK; }
+	YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 208 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
 { Filelval.StrVal = new std::string(yytext, yytext+yyleng);
                  return ID; }
 	YY_BREAK
-case 20:
+case 21:
 YY_RULE_SETUP
-#line 209 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
+#line 210 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
 { Filelval.StrVal = new std::string(yytext+1, yytext+yyleng);
                  return VARNAME; } 
 	YY_BREAK
-case 21:
+case 22:
 YY_RULE_SETUP
-#line 212 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
+#line 213 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
 { Filelval.StrVal = new std::string(yytext+1, yytext+yyleng-1);
                  return STRVAL; }
 	YY_BREAK
-case 22:
-YY_RULE_SETUP
-#line 215 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
-{ Filelval.IntVal = ParseInt(Filetext); return INTVAL; }
-	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 217 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
-{ /* Ignore whitespace */ }
+#line 216 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
+{ Filelval.IntVal = ParseInt(Filetext); return INTVAL; }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 220 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
-{ BEGIN(comment); CommentDepth++; }
+#line 218 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
+{ /* Ignore whitespace */ }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
 #line 221 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
-{} /* eat anything that's not a '*' or '/' */
+{ BEGIN(comment); CommentDepth++; }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
 #line 222 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
-{} /* eat up '*'s not followed by '/'s */
+{} /* eat anything that's not a '*' or '/' */
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
 #line 223 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
-{ ++CommentDepth; }
+{} /* eat up '*'s not followed by '/'s */
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
 #line 224 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
-{} /* eat up /'s not followed by *'s */
+{ ++CommentDepth; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
 #line 225 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
+{} /* eat up /'s not followed by *'s */
+	YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 226 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
 { if (!--CommentDepth) { BEGIN(INITIAL); } }
 	YY_BREAK
 case YY_STATE_EOF(comment):
-#line 226 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
+#line 227 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
 { err() << "Unterminated comment!\n"; exit(1); }
 	YY_BREAK
-case 30:
+case 31:
 YY_RULE_SETUP
-#line 228 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
+#line 229 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
 { return Filetext[0]; }
 	YY_BREAK
-case 31:
+case 32:
 YY_RULE_SETUP
-#line 230 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
+#line 231 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 1060 "Lexer.cpp"
+#line 1068 "Lexer.cpp"
 			case YY_STATE_EOF(INITIAL):
 				yyterminate();
 
@@ -1345,7 +1353,7 @@
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 100 )
+			if ( yy_current_state >= 108 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1375,11 +1383,11 @@
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 100 )
+		if ( yy_current_state >= 108 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 99);
+	yy_is_jam = (yy_current_state == 107);
 	if ( ! yy_is_jam )
 		*yy_state_ptr++ = yy_current_state;
 
@@ -1940,6 +1948,6 @@
 	return 0;
 	}
 #endif
-#line 230 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
+#line 231 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileLexer.l"
 
 


Index: llvm/utils/TableGen/FileLexer.l.cvs
diff -u llvm/utils/TableGen/FileLexer.l.cvs:1.3 llvm/utils/TableGen/FileLexer.l.cvs:1.4
--- llvm/utils/TableGen/FileLexer.l.cvs:1.3	Fri Mar  3 13:34:28 2006
+++ llvm/utils/TableGen/FileLexer.l.cvs	Fri Mar 31 15:54:11 2006
@@ -202,6 +202,7 @@
 !sra           { return SRATOK; }
 !srl           { return SRLTOK; }
 !shl           { return SHLTOK; }
+!strconcat     { return STRCONCATTOK; }
 
 
 {Identifier}   { Filelval.StrVal = new std::string(yytext, yytext+yyleng);


Index: llvm/utils/TableGen/FileParser.cpp.cvs
diff -u llvm/utils/TableGen/FileParser.cpp.cvs:1.2 llvm/utils/TableGen/FileParser.cpp.cvs:1.3
--- llvm/utils/TableGen/FileParser.cpp.cvs:1.2	Thu Mar 30 16:51:12 2006
+++ llvm/utils/TableGen/FileParser.cpp.cvs	Fri Mar 31 15:54:11 2006
@@ -26,11 +26,12 @@
 #define	SHLTOK	269
 #define	SRATOK	270
 #define	SRLTOK	271
-#define	INTVAL	272
-#define	ID	273
-#define	VARNAME	274
-#define	STRVAL	275
-#define	CODEFRAGMENT	276
+#define	STRCONCATTOK	272
+#define	INTVAL	273
+#define	ID	274
+#define	VARNAME	275
+#define	STRVAL	276
+#define	CODEFRAGMENT	277
 
 #line 14 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 
@@ -230,26 +231,26 @@
 
 
 
-#define	YYFINAL		162
+#define	YYFINAL		168
 #define	YYFLAG		-32768
-#define	YYNTBASE	38
+#define	YYNTBASE	39
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 276 ? yytranslate[x] : 79)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 277 ? yytranslate[x] : 80)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,    32,
-    33,     2,     2,    34,    36,    31,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,    35,    37,    23,
-    25,    24,    26,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,    33,
+    34,     2,     2,    35,    37,    32,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,    36,    38,    24,
+    26,    25,    27,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-    29,     2,    30,     2,     2,     2,     2,     2,     2,     2,
+    30,     2,    31,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,    27,     2,    28,     2,     2,     2,     2,     2,
+     2,     2,    28,     2,    29,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -264,7 +265,7 @@
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
      7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22
+    17,    18,    19,    20,    21,    22,    23
 };
 
 #if YYDEBUG != 0
@@ -272,42 +273,43 @@
      0,     2,     4,     6,    11,    13,    18,    20,    22,    24,
     25,    27,    28,    31,    33,    35,    37,    39,    41,    43,
     47,    52,    57,    61,    65,    70,    75,    82,    89,    96,
-    97,   100,   103,   108,   109,   111,   113,   117,   120,   124,
-   130,   135,   137,   138,   142,   143,   145,   147,   151,   156,
-   159,   166,   167,   170,   172,   176,   178,   183,   185,   189,
-   190,   193,   195,   199,   203,   204,   206,   208,   209,   211,
-   213,   215,   216,   220,   221,   222,   229,   233,   235,   237,
-   242,   244,   248,   249,   254,   259,   262,   264,   267
+   103,   104,   107,   110,   115,   116,   118,   120,   124,   127,
+   131,   137,   142,   144,   145,   149,   150,   152,   154,   158,
+   163,   166,   173,   174,   177,   179,   183,   185,   190,   192,
+   196,   197,   200,   202,   206,   210,   211,   213,   215,   216,
+   218,   220,   222,   223,   227,   228,   229,   236,   240,   242,
+   244,   249,   251,   255,   256,   261,   266,   269,   271,   274
 };
 
-static const short yyrhs[] = {    19,
-     0,     5,     0,     4,     0,     6,    23,    18,    24,     0,
-     3,     0,     7,    23,    39,    24,     0,     8,     0,     9,
-     0,    38,     0,     0,    12,     0,     0,    25,    43,     0,
-    19,     0,    42,     0,    18,     0,    21,     0,    22,     0,
-    26,     0,    27,    50,    28,     0,    19,    23,    51,    24,
-     0,    43,    27,    48,    28,     0,    29,    50,    30,     0,
-    43,    31,    19,     0,    32,    42,    46,    33,     0,    43,
-    29,    48,    30,     0,    15,    32,    43,    34,    43,    33,
-     0,    16,    32,    43,    34,    43,    33,     0,    17,    32,
-    43,    34,    43,    33,     0,     0,    35,    20,     0,    43,
-    44,     0,    45,    34,    43,    44,     0,     0,    45,     0,
-    18,     0,    18,    36,    18,     0,    18,    18,     0,    47,
-    34,    18,     0,    47,    34,    18,    36,    18,     0,    47,
-    34,    18,    18,     0,    47,     0,     0,    27,    48,    28,
-     0,     0,    51,     0,    43,     0,    51,    34,    43,     0,
-    40,    39,    19,    41,     0,    52,    37,     0,    13,    19,
-    49,    25,    43,    37,     0,     0,    54,    53,     0,    37,
-     0,    27,    54,    28,     0,    38,     0,    38,    23,    51,
-    24,     0,    56,     0,    57,    34,    56,     0,     0,    35,
-    57,     0,    52,     0,    59,    34,    52,     0,    23,    59,
-    24,     0,     0,    60,     0,    19,     0,     0,    62,     0,
-    63,     0,    63,     0,     0,    58,    67,    55,     0,     0,
-     0,    10,    64,    69,    61,    70,    66,     0,    11,    65,
-    66,     0,    68,     0,    71,     0,    19,    49,    25,    43,
-     0,    73,     0,    74,    34,    73,     0,     0,    13,    76,
-    74,    14,     0,    75,    27,    77,    28,     0,    75,    72,
-     0,    72,     0,    77,    72,     0,    77,     0
+static const short yyrhs[] = {    20,
+     0,     5,     0,     4,     0,     6,    24,    19,    25,     0,
+     3,     0,     7,    24,    40,    25,     0,     8,     0,     9,
+     0,    39,     0,     0,    12,     0,     0,    26,    44,     0,
+    20,     0,    43,     0,    19,     0,    22,     0,    23,     0,
+    27,     0,    28,    51,    29,     0,    20,    24,    52,    25,
+     0,    44,    28,    49,    29,     0,    30,    51,    31,     0,
+    44,    32,    20,     0,    33,    43,    47,    34,     0,    44,
+    30,    49,    31,     0,    15,    33,    44,    35,    44,    34,
+     0,    16,    33,    44,    35,    44,    34,     0,    17,    33,
+    44,    35,    44,    34,     0,    18,    33,    44,    35,    44,
+    34,     0,     0,    36,    21,     0,    44,    45,     0,    46,
+    35,    44,    45,     0,     0,    46,     0,    19,     0,    19,
+    37,    19,     0,    19,    19,     0,    48,    35,    19,     0,
+    48,    35,    19,    37,    19,     0,    48,    35,    19,    19,
+     0,    48,     0,     0,    28,    49,    29,     0,     0,    52,
+     0,    44,     0,    52,    35,    44,     0,    41,    40,    20,
+    42,     0,    53,    38,     0,    13,    20,    50,    26,    44,
+    38,     0,     0,    55,    54,     0,    38,     0,    28,    55,
+    29,     0,    39,     0,    39,    24,    52,    25,     0,    57,
+     0,    58,    35,    57,     0,     0,    36,    58,     0,    53,
+     0,    60,    35,    53,     0,    24,    60,    25,     0,     0,
+    61,     0,    20,     0,     0,    63,     0,    64,     0,    64,
+     0,     0,    59,    68,    56,     0,     0,     0,    10,    65,
+    70,    62,    71,    67,     0,    11,    66,    67,     0,    69,
+     0,    72,     0,    20,    50,    26,    44,     0,    74,     0,
+    75,    35,    74,     0,     0,    13,    77,    75,    14,     0,
+    76,    28,    78,    29,     0,    76,    73,     0,    73,     0,
+    78,    73,     0,    78,     0
 };
 
 #endif
@@ -316,13 +318,13 @@
 static const short yyrline[] = { 0,
    223,   234,   236,   238,   240,   242,   244,   246,   248,   252,
    252,   254,   254,   256,   273,   275,   277,   280,   283,   285,
-   298,   326,   333,   336,   343,   346,   354,   360,   366,   374,
-   377,   381,   386,   392,   395,   398,   401,   414,   428,   430,
-   443,   459,   461,   461,   465,   467,   471,   474,   478,   488,
-   490,   496,   496,   497,   497,   499,   501,   505,   510,   515,
-   518,   522,   525,   530,   531,   531,   533,   533,   535,   542,
-   560,   572,   586,   591,   593,   595,   599,   608,   608,   610,
-   615,   615,   618,   618,   621,   624,   628,   628,   630
+   298,   326,   333,   336,   343,   346,   354,   356,   358,   360,
+   364,   367,   371,   376,   382,   385,   388,   391,   404,   418,
+   420,   433,   449,   451,   451,   455,   457,   461,   464,   468,
+   478,   480,   486,   486,   487,   487,   489,   491,   495,   500,
+   505,   508,   512,   515,   520,   521,   521,   523,   523,   525,
+   532,   550,   562,   576,   581,   583,   585,   589,   598,   598,
+   600,   605,   605,   608,   608,   611,   614,   618,   618,   620
 };
 #endif
 
@@ -331,137 +333,139 @@
 
 static const char * const yytname[] = {   "$","error","$undefined.","INT","BIT",
 "STRING","BITS","LIST","CODE","DAG","CLASS","DEF","FIELD","LET","IN","SHLTOK",
-"SRATOK","SRLTOK","INTVAL","ID","VARNAME","STRVAL","CODEFRAGMENT","'<'","'>'",
-"'='","'?'","'{'","'}'","'['","']'","'.'","'('","')'","','","':'","'-'","';'",
-"ClassID","Type","OptPrefix","OptValue","IDValue","Value","OptVarName","DagArgListNE",
-"DagArgList","RBitList","BitList","OptBitList","ValueList","ValueListNE","Declaration",
-"BodyItem","BodyList","Body","SubClassRef","ClassListNE","ClassList","DeclListNE",
-"TemplateArgList","OptTemplateArgList","OptID","ObjectName","ClassName","DefName",
-"ObjectBody","@1","ClassInst","@2","@3","DefInst","Object","LETItem","LETList",
-"LETCommand","@4","ObjectList","File", NULL
+"SRATOK","SRLTOK","STRCONCATTOK","INTVAL","ID","VARNAME","STRVAL","CODEFRAGMENT",
+"'<'","'>'","'='","'?'","'{'","'}'","'['","']'","'.'","'('","')'","','","':'",
+"'-'","';'","ClassID","Type","OptPrefix","OptValue","IDValue","Value","OptVarName",
+"DagArgListNE","DagArgList","RBitList","BitList","OptBitList","ValueList","ValueListNE",
+"Declaration","BodyItem","BodyList","Body","SubClassRef","ClassListNE","ClassList",
+"DeclListNE","TemplateArgList","OptTemplateArgList","OptID","ObjectName","ClassName",
+"DefName","ObjectBody","@1","ClassInst","@2","@3","DefInst","Object","LETItem",
+"LETList","LETCommand","@4","ObjectList","File", NULL
 };
 #endif
 
 static const short yyr1[] = {     0,
-    38,    39,    39,    39,    39,    39,    39,    39,    39,    40,
-    40,    41,    41,    42,    43,    43,    43,    43,    43,    43,
-    43,    43,    43,    43,    43,    43,    43,    43,    43,    44,
-    44,    45,    45,    46,    46,    47,    47,    47,    47,    47,
-    47,    48,    49,    49,    50,    50,    51,    51,    52,    53,
-    53,    54,    54,    55,    55,    56,    56,    57,    57,    58,
-    58,    59,    59,    60,    61,    61,    62,    62,    63,    64,
-    65,    67,    66,    69,    70,    68,    71,    72,    72,    73,
-    74,    74,    76,    75,    72,    72,    77,    77,    78
+    39,    40,    40,    40,    40,    40,    40,    40,    40,    41,
+    41,    42,    42,    43,    44,    44,    44,    44,    44,    44,
+    44,    44,    44,    44,    44,    44,    44,    44,    44,    44,
+    45,    45,    46,    46,    47,    47,    48,    48,    48,    48,
+    48,    48,    49,    50,    50,    51,    51,    52,    52,    53,
+    54,    54,    55,    55,    56,    56,    57,    57,    58,    58,
+    59,    59,    60,    60,    61,    62,    62,    63,    63,    64,
+    65,    66,    68,    67,    70,    71,    69,    72,    73,    73,
+    74,    75,    75,    77,    76,    73,    73,    78,    78,    79
 };
 
 static const short yyr2[] = {     0,
      1,     1,     1,     4,     1,     4,     1,     1,     1,     0,
      1,     0,     2,     1,     1,     1,     1,     1,     1,     3,
-     4,     4,     3,     3,     4,     4,     6,     6,     6,     0,
-     2,     2,     4,     0,     1,     1,     3,     2,     3,     5,
-     4,     1,     0,     3,     0,     1,     1,     3,     4,     2,
-     6,     0,     2,     1,     3,     1,     4,     1,     3,     0,
-     2,     1,     3,     3,     0,     1,     1,     0,     1,     1,
-     1,     0,     3,     0,     0,     6,     3,     1,     1,     4,
-     1,     3,     0,     4,     4,     2,     1,     2,     1
+     4,     4,     3,     3,     4,     4,     6,     6,     6,     6,
+     0,     2,     2,     4,     0,     1,     1,     3,     2,     3,
+     5,     4,     1,     0,     3,     0,     1,     1,     3,     4,
+     2,     6,     0,     2,     1,     3,     1,     4,     1,     3,
+     0,     2,     1,     3,     3,     0,     1,     1,     0,     1,
+     1,     1,     0,     3,     0,     0,     6,     3,     1,     1,
+     4,     1,     3,     0,     4,     4,     2,     1,     2,     1
 };
 
 static const short yydefact[] = {     0,
-    68,    68,    83,    78,    79,    87,     0,    89,    67,    69,
-    70,    74,    71,    60,     0,     0,    86,    88,    65,     0,
-    72,    77,    43,    81,     0,     0,    10,    66,    75,     1,
-    56,    58,    61,     0,     0,     0,    84,     0,    85,    11,
-     0,    62,     0,    60,     0,     0,    52,    54,    73,    36,
-    42,     0,     0,    82,     5,     3,     2,     0,     0,     7,
-     8,     9,     0,    64,    10,    76,     0,     0,     0,    16,
-    14,    17,    18,    19,    45,    45,     0,    15,    47,     0,
-    59,    10,    38,     0,     0,    44,    80,     0,     0,    12,
-    63,     0,     0,     0,     0,     0,    46,     0,    14,    34,
-     0,     0,     0,    57,     0,     0,    55,     0,    53,    37,
-    39,     0,     0,     0,    49,     0,     0,     0,     0,    20,
-    23,    30,    35,     0,     0,     0,    24,    48,    43,    50,
-    41,     0,     4,     6,    13,     0,     0,     0,    21,     0,
-    32,     0,    25,    22,    26,     0,    40,     0,     0,     0,
-    31,    30,     0,    27,    28,    29,    33,     0,    51,     0,
-     0,     0
+    69,    69,    84,    79,    80,    88,     0,    90,    68,    70,
+    71,    75,    72,    61,     0,     0,    87,    89,    66,     0,
+    73,    78,    44,    82,     0,     0,    10,    67,    76,     1,
+    57,    59,    62,     0,     0,     0,    85,     0,    86,    11,
+     0,    63,     0,    61,     0,     0,    53,    55,    74,    37,
+    43,     0,     0,    83,     5,     3,     2,     0,     0,     7,
+     8,     9,     0,    65,    10,    77,     0,     0,     0,     0,
+    16,    14,    17,    18,    19,    46,    46,     0,    15,    48,
+     0,    60,    10,    39,     0,     0,    45,    81,     0,     0,
+    12,    64,     0,     0,     0,     0,     0,     0,    47,     0,
+    14,    35,     0,     0,     0,    58,     0,     0,    56,     0,
+    54,    38,    40,     0,     0,     0,    50,     0,     0,     0,
+     0,     0,    20,    23,    31,    36,     0,     0,     0,    24,
+    49,    44,    51,    42,     0,     4,     6,    13,     0,     0,
+     0,     0,    21,     0,    33,     0,    25,    22,    26,     0,
+    41,     0,     0,     0,     0,    32,    31,     0,    27,    28,
+    29,    30,    34,     0,    52,     0,     0,     0
 };
 
 static const short yydefgoto[] = {    31,
-    63,    41,   115,    78,    79,   141,   123,   124,    51,    52,
-    36,    96,    97,    42,   109,    82,    49,    32,    33,    21,
+    63,    41,   117,    79,    80,   145,   126,   127,    51,    52,
+    36,    98,    99,    42,   111,    83,    49,    32,    33,    21,
     43,    28,    29,    10,    11,    12,    14,    22,    34,     4,
-    19,    44,     5,     6,    24,    25,     7,    15,     8,   160
+    19,    44,     5,     6,    24,    25,     7,    15,     8,   166
 };
 
-static const short yypact[] = {     5,
-     7,     7,-32768,-32768,-32768,-32768,     1,     5,-32768,-32768,
--32768,-32768,-32768,   -18,    25,     5,-32768,-32768,    23,    30,
--32768,-32768,    44,-32768,   -11,    -3,    60,-32768,-32768,-32768,
-    54,-32768,    40,    -8,    63,    62,-32768,    25,-32768,-32768,
-    50,-32768,    39,   -18,    16,    30,-32768,-32768,-32768,   -14,
-    45,    65,    16,-32768,-32768,-32768,-32768,    68,    74,-32768,
--32768,-32768,    80,-32768,    60,-32768,    87,    91,    92,-32768,
-    98,-32768,-32768,-32768,    16,    16,   106,-32768,    76,    41,
--32768,     8,-32768,   108,   109,-32768,    76,   110,    50,   104,
--32768,    16,    16,    16,    16,   102,    97,   103,-32768,    16,
-    63,    63,   113,-32768,    16,   115,-32768,    99,-32768,-32768,
-    -9,   111,   114,    16,-32768,    61,    67,    75,    42,-32768,
--32768,    51,   105,   107,   116,   112,-32768,    76,    44,-32768,
--32768,   119,-32768,-32768,    76,    16,    16,    16,-32768,   121,
--32768,    16,-32768,-32768,-32768,   118,-32768,    81,    84,    89,
--32768,    51,    16,-32768,-32768,-32768,-32768,    33,-32768,   145,
-   146,-32768
+static const short yypact[] = {    67,
+   -14,   -14,-32768,-32768,-32768,-32768,    19,    67,-32768,-32768,
+-32768,-32768,-32768,    -3,    63,    67,-32768,-32768,    60,    65,
+-32768,-32768,     7,-32768,   -11,    -6,    79,-32768,-32768,-32768,
+    71,-32768,     4,   -16,    82,    73,-32768,    63,-32768,-32768,
+    61,-32768,    11,    -3,    -2,    65,-32768,-32768,-32768,     0,
+    72,    98,    -2,-32768,-32768,-32768,-32768,   105,   106,-32768,
+-32768,-32768,   111,-32768,    79,-32768,    99,   100,   101,   102,
+-32768,   112,-32768,-32768,-32768,    -2,    -2,   117,-32768,    96,
+    23,-32768,    32,-32768,   119,   120,-32768,    96,   121,    61,
+   115,-32768,    -2,    -2,    -2,    -2,    -2,   113,   108,   114,
+-32768,    -2,    82,    82,   124,-32768,    -2,   126,-32768,   109,
+-32768,-32768,    15,   123,   125,    -2,-32768,    27,    62,    68,
+    74,    25,-32768,-32768,    43,   116,   118,   127,   122,-32768,
+    96,     7,-32768,-32768,   130,-32768,-32768,    96,    -2,    -2,
+    -2,    -2,-32768,   133,-32768,    -2,-32768,-32768,-32768,   129,
+-32768,    80,    83,    88,    91,-32768,    43,    -2,-32768,-32768,
+-32768,-32768,-32768,    44,-32768,   157,   158,-32768
 };
 
 static const short yypgoto[] = {   -39,
-    58,-32768,-32768,    71,   -53,    -1,-32768,-32768,-32768,   -34,
-    20,    77,   -44,   -52,-32768,-32768,-32768,   117,-32768,-32768,
--32768,-32768,-32768,-32768,   148,-32768,-32768,   120,-32768,-32768,
--32768,-32768,-32768,    -2,   122,-32768,-32768,-32768,   136,-32768
+    69,-32768,-32768,    84,   -53,     3,-32768,-32768,-32768,   -93,
+    29,    86,   -44,   -27,-32768,-32768,-32768,   128,-32768,-32768,
+-32768,-32768,-32768,-32768,   162,-32768,-32768,   131,-32768,-32768,
+-32768,-32768,-32768,     1,   132,-32768,-32768,-32768,   149,-32768
 };
 
 
-#define	YYLAST		164
+#define	YYLAST		175
 
 
-static const short yytable[] = {    87,
-    80,    62,    37,    83,    17,    18,     1,     2,   131,     3,
-     1,     2,    91,     3,     1,     2,    20,     3,    47,    40,
-   106,    84,    38,    18,    39,     9,   132,    16,    48,   108,
-    67,    68,    69,    70,    71,   107,    72,    73,   116,   117,
-   118,    74,    75,    23,    76,    27,   122,    77,    30,    62,
-   119,   128,    55,    56,    57,    58,    59,    60,    61,   101,
-   135,   102,    64,   103,   104,   139,   125,   126,    30,   159,
-    35,    40,    65,    46,   105,   105,    45,   101,    85,   102,
-    50,   103,   148,   149,   150,   140,    53,   101,   152,   102,
-    88,   103,    86,   101,   136,   102,    89,   103,    90,   158,
-   137,   101,   101,   102,   102,   103,   103,   101,   138,   102,
-   101,   103,   102,   154,   103,   101,   155,   102,    92,   103,
-    95,   156,    93,    94,    99,   110,   111,   112,   114,   120,
-   105,   127,   121,   129,   133,   130,   147,   134,   142,   143,
-   151,   145,   153,   144,   161,   162,   113,   100,   146,    13,
-   157,    26,    98,     0,     0,     0,     0,     0,     0,    54,
-     0,     0,    81,    66
+static const short yytable[] = {    88,
+    81,    62,    37,     1,     2,     9,     3,    17,    18,   128,
+   129,    47,    67,    68,    69,    70,    71,    72,    84,    73,
+    74,    48,    39,    38,    75,    76,    18,    77,     1,     2,
+    78,     3,    20,   134,    35,    64,    85,    92,    46,   118,
+   119,   120,   121,    40,   108,    65,    16,   106,   125,   143,
+    62,   135,   122,   131,   103,   110,   104,   107,   105,   107,
+   109,   139,   138,    55,    56,    57,    58,    59,    60,    61,
+   103,   103,   104,   104,   105,   105,     1,     2,   144,     3,
+    30,   165,    23,    27,    30,   152,   153,   154,   155,   103,
+    40,   104,   157,   105,    45,   103,   140,   104,    53,   105,
+    50,   103,   141,   104,   164,   105,    86,   103,   142,   104,
+   103,   105,   104,   159,   105,   103,   160,   104,   103,   105,
+   104,   161,   105,   103,   162,   104,    87,   105,    89,    90,
+    91,    93,    94,    95,    96,    97,   101,   112,   113,   114,
+   116,   123,   107,   130,   124,   132,   133,   136,   151,   137,
+   146,   147,   149,   156,   158,   148,   167,   168,   115,   163,
+   150,   102,   100,    13,    26,     0,     0,     0,     0,    54,
+     0,     0,     0,    82,    66
 };
 
 static const short yycheck[] = {    53,
-    45,    41,    14,    18,     7,     8,    10,    11,    18,    13,
-    10,    11,    65,    13,    10,    11,    35,    13,    27,    12,
-    13,    36,    34,    26,    28,    19,    36,    27,    37,    82,
-    15,    16,    17,    18,    19,    28,    21,    22,    92,    93,
-    94,    26,    27,    19,    29,    23,   100,    32,    19,    89,
-    95,   105,     3,     4,     5,     6,     7,     8,     9,    27,
-   114,    29,    24,    31,    24,    24,   101,   102,    19,    37,
-    27,    12,    34,    34,    34,    34,    23,    27,    34,    29,
-    18,    31,   136,   137,   138,    35,    25,    27,   142,    29,
-    23,    31,    28,    27,    34,    29,    23,    31,    19,   153,
-    34,    27,    27,    29,    29,    31,    31,    27,    34,    29,
-    27,    31,    29,    33,    31,    27,    33,    29,    32,    31,
-    23,    33,    32,    32,    19,    18,    18,    18,    25,    28,
-    34,    19,    30,    19,    24,    37,    18,    24,    34,    33,
-    20,    30,    25,    28,     0,     0,    89,    77,   129,     2,
-   152,    16,    76,    -1,    -1,    -1,    -1,    -1,    -1,    38,
-    -1,    -1,    46,    44
+    45,    41,    14,    10,    11,    20,    13,     7,     8,   103,
+   104,    28,    15,    16,    17,    18,    19,    20,    19,    22,
+    23,    38,    29,    35,    27,    28,    26,    30,    10,    11,
+    33,    13,    36,    19,    28,    25,    37,    65,    35,    93,
+    94,    95,    96,    12,    13,    35,    28,    25,   102,    25,
+    90,    37,    97,   107,    28,    83,    30,    35,    32,    35,
+    29,    35,   116,     3,     4,     5,     6,     7,     8,     9,
+    28,    28,    30,    30,    32,    32,    10,    11,    36,    13,
+    20,    38,    20,    24,    20,   139,   140,   141,   142,    28,
+    12,    30,   146,    32,    24,    28,    35,    30,    26,    32,
+    19,    28,    35,    30,   158,    32,    35,    28,    35,    30,
+    28,    32,    30,    34,    32,    28,    34,    30,    28,    32,
+    30,    34,    32,    28,    34,    30,    29,    32,    24,    24,
+    20,    33,    33,    33,    33,    24,    20,    19,    19,    19,
+    26,    29,    35,    20,    31,    20,    38,    25,    19,    25,
+    35,    34,    31,    21,    26,    29,     0,     0,    90,   157,
+   132,    78,    77,     2,    16,    -1,    -1,    -1,    -1,    38,
+    -1,    -1,    -1,    46,    44
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/share/bison.simple"
@@ -1232,80 +1236,74 @@
 case 27:
 #line 354 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
-    yyval.Initializer = yyvsp[-3].Initializer->getBinaryOp(Init::SHL, yyvsp[-1].Initializer);
-    if (yyval.Initializer == 0) {
-      err() << "Cannot shift values '" << *yyvsp[-3].Initializer << "' and '" << *yyvsp[-1].Initializer << "'!\n";
-      exit(1);
-    }
+    yyval.Initializer = (new BinOpInit(BinOpInit::SHL, yyvsp[-3].Initializer, yyvsp[-1].Initializer))->Fold();
   ;
     break;}
 case 28:
-#line 360 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+#line 356 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
-    yyval.Initializer = yyvsp[-3].Initializer->getBinaryOp(Init::SRA, yyvsp[-1].Initializer);
-    if (yyval.Initializer == 0) {
-      err() << "Cannot shift values '" << *yyvsp[-3].Initializer << "' and '" << *yyvsp[-1].Initializer << "'!\n";
-      exit(1);
-    }
+    yyval.Initializer = (new BinOpInit(BinOpInit::SRA, yyvsp[-3].Initializer, yyvsp[-1].Initializer))->Fold();
   ;
     break;}
 case 29:
-#line 366 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+#line 358 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
-    yyval.Initializer = yyvsp[-3].Initializer->getBinaryOp(Init::SRL, yyvsp[-1].Initializer);
-    if (yyval.Initializer == 0) {
-      err() << "Cannot shift values '" << *yyvsp[-3].Initializer << "' and '" << *yyvsp[-1].Initializer << "'!\n";
-      exit(1);
-    }
+    yyval.Initializer = (new BinOpInit(BinOpInit::SRL, yyvsp[-3].Initializer, yyvsp[-1].Initializer))->Fold();
   ;
     break;}
 case 30:
-#line 374 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+#line 360 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
-    yyval.StrVal = new std::string();
+    yyval.Initializer = (new BinOpInit(BinOpInit::STRCONCAT, yyvsp[-3].Initializer, yyvsp[-1].Initializer))->Fold();
   ;
     break;}
 case 31:
-#line 377 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+#line 364 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
-    yyval.StrVal = yyvsp[0].StrVal;
+    yyval.StrVal = new std::string();
   ;
     break;}
 case 32:
-#line 381 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+#line 367 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+{
+    yyval.StrVal = yyvsp[0].StrVal;
+  ;
+    break;}
+case 33:
+#line 371 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     yyval.DagValueList = new std::vector<std::pair<Init*, std::string> >();
     yyval.DagValueList->push_back(std::make_pair(yyvsp[-1].Initializer, *yyvsp[0].StrVal));
     delete yyvsp[0].StrVal;
   ;
     break;}
-case 33:
-#line 386 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 34:
+#line 376 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     yyvsp[-3].DagValueList->push_back(std::make_pair(yyvsp[-1].Initializer, *yyvsp[0].StrVal));
     delete yyvsp[0].StrVal;
     yyval.DagValueList = yyvsp[-3].DagValueList;
   ;
     break;}
-case 34:
-#line 392 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 35:
+#line 382 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     yyval.DagValueList = new std::vector<std::pair<Init*, std::string> >();
   ;
     break;}
-case 35:
-#line 395 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 36:
+#line 385 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 { yyval.DagValueList = yyvsp[0].DagValueList; ;
     break;}
-case 36:
-#line 398 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 37:
+#line 388 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     yyval.BitList = new std::vector<unsigned>();
     yyval.BitList->push_back(yyvsp[0].IntVal);
   ;
     break;}
-case 37:
-#line 401 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 38:
+#line 391 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     if (yyvsp[-2].IntVal < 0 || yyvsp[0].IntVal < 0) {
       err() << "Invalid range: " << yyvsp[-2].IntVal << "-" << yyvsp[0].IntVal << "!\n";
@@ -1321,8 +1319,8 @@
     }
   ;
     break;}
-case 38:
-#line 414 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 39:
+#line 404 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     yyvsp[0].IntVal = -yyvsp[0].IntVal;
     if (yyvsp[-1].IntVal < 0 || yyvsp[0].IntVal < 0) {
@@ -1339,14 +1337,14 @@
     }
   ;
     break;}
-case 39:
-#line 428 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 40:
+#line 418 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     (yyval.BitList=yyvsp[-2].BitList)->push_back(yyvsp[0].IntVal);
   ;
     break;}
-case 40:
-#line 430 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 41:
+#line 420 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     if (yyvsp[-2].IntVal < 0 || yyvsp[0].IntVal < 0) {
       err() << "Invalid range: " << yyvsp[-2].IntVal << "-" << yyvsp[0].IntVal << "!\n";
@@ -1362,8 +1360,8 @@
     }
   ;
     break;}
-case 41:
-#line 443 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 42:
+#line 433 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     yyvsp[0].IntVal = -yyvsp[0].IntVal;
     if (yyvsp[-1].IntVal < 0 || yyvsp[0].IntVal < 0) {
@@ -1380,45 +1378,45 @@
     }
   ;
     break;}
-case 42:
-#line 459 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 43:
+#line 449 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 { yyval.BitList = yyvsp[0].BitList; std::reverse(yyvsp[0].BitList->begin(), yyvsp[0].BitList->end()); ;
     break;}
-case 43:
-#line 461 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 44:
+#line 451 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 { yyval.BitList = 0; ;
     break;}
-case 44:
-#line 461 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 45:
+#line 451 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 { yyval.BitList = yyvsp[-1].BitList; ;
     break;}
-case 45:
-#line 465 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 46:
+#line 455 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     yyval.FieldList = new std::vector<Init*>();
   ;
     break;}
-case 46:
-#line 467 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 47:
+#line 457 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     yyval.FieldList = yyvsp[0].FieldList;
   ;
     break;}
-case 47:
-#line 471 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 48:
+#line 461 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     yyval.FieldList = new std::vector<Init*>();
     yyval.FieldList->push_back(yyvsp[0].Initializer);
   ;
     break;}
-case 48:
-#line 474 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 49:
+#line 464 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     (yyval.FieldList = yyvsp[-2].FieldList)->push_back(yyvsp[0].Initializer);
   ;
     break;}
-case 49:
-#line 478 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 50:
+#line 468 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
   std::string DecName = *yyvsp[-1].StrVal;
   if (ParsingTemplateArgs)
@@ -1429,87 +1427,87 @@
   yyval.StrVal = new std::string(DecName);
 ;
     break;}
-case 50:
-#line 488 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 51:
+#line 478 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
   delete yyvsp[-1].StrVal;
 ;
     break;}
-case 51:
-#line 490 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 52:
+#line 480 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
   setValue(*yyvsp[-4].StrVal, yyvsp[-3].BitList, yyvsp[-1].Initializer);
   delete yyvsp[-4].StrVal;
   delete yyvsp[-3].BitList;
 ;
     break;}
-case 56:
-#line 499 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 57:
+#line 489 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     yyval.SubClassRef = new SubClassRefTy(yyvsp[0].Rec, new std::vector<Init*>());
   ;
     break;}
-case 57:
-#line 501 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 58:
+#line 491 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     yyval.SubClassRef = new SubClassRefTy(yyvsp[-3].Rec, yyvsp[-1].FieldList);
   ;
     break;}
-case 58:
-#line 505 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 59:
+#line 495 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     yyval.SubClassList = new std::vector<SubClassRefTy>();
     yyval.SubClassList->push_back(*yyvsp[0].SubClassRef);
     delete yyvsp[0].SubClassRef;
   ;
     break;}
-case 59:
-#line 510 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 60:
+#line 500 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     (yyval.SubClassList=yyvsp[-2].SubClassList)->push_back(*yyvsp[0].SubClassRef);
     delete yyvsp[0].SubClassRef;
   ;
     break;}
-case 60:
-#line 515 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 61:
+#line 505 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     yyval.SubClassList = new std::vector<SubClassRefTy>();
   ;
     break;}
-case 61:
-#line 518 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 62:
+#line 508 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     yyval.SubClassList = yyvsp[0].SubClassList;
   ;
     break;}
-case 62:
-#line 522 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 63:
+#line 512 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
   CurRec->addTemplateArg(*yyvsp[0].StrVal);
   delete yyvsp[0].StrVal;
 ;
     break;}
-case 63:
-#line 525 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 64:
+#line 515 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
   CurRec->addTemplateArg(*yyvsp[0].StrVal);
   delete yyvsp[0].StrVal;
 ;
     break;}
-case 64:
-#line 530 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 65:
+#line 520 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {;
     break;}
-case 67:
-#line 533 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 68:
+#line 523 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 { yyval.StrVal = yyvsp[0].StrVal; ;
     break;}
-case 68:
-#line 533 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 69:
+#line 523 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 { yyval.StrVal = new std::string(); ;
     break;}
-case 69:
-#line 535 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 70:
+#line 525 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
   static unsigned AnonCounter = 0;
   if (yyvsp[0].StrVal->empty())
@@ -1517,8 +1515,8 @@
   yyval.StrVal = yyvsp[0].StrVal;
 ;
     break;}
-case 70:
-#line 542 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 71:
+#line 532 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
   // If a class of this name already exists, it must be a forward ref.
   if ((CurRec = Records.getClass(*yyvsp[0].StrVal))) {
@@ -1537,8 +1535,8 @@
   delete yyvsp[0].StrVal;
 ;
     break;}
-case 71:
-#line 560 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 72:
+#line 550 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
   CurRec = new Record(*yyvsp[0].StrVal);
   delete yyvsp[0].StrVal;
@@ -1551,8 +1549,8 @@
   Records.addDef(CurRec);
 ;
     break;}
-case 72:
-#line 572 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 73:
+#line 562 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
            for (unsigned i = 0, e = yyvsp[0].SubClassList->size(); i != e; ++i) {
              addSubClass((*yyvsp[0].SubClassList)[i].first, *(*yyvsp[0].SubClassList)[i].second);
@@ -1569,33 +1567,33 @@
                         LetStack[i][j].Value);
          ;
     break;}
-case 73:
-#line 586 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 74:
+#line 576 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
            yyval.Rec = CurRec;
            CurRec = 0;
          ;
     break;}
-case 74:
-#line 591 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 75:
+#line 581 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
                 ParsingTemplateArgs = true;
             ;
     break;}
-case 75:
-#line 593 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 76:
+#line 583 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
                 ParsingTemplateArgs = false;
             ;
     break;}
-case 76:
-#line 595 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 77:
+#line 585 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
         yyval.Rec = yyvsp[0].Rec;
      ;
     break;}
-case 77:
-#line 599 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 78:
+#line 589 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
   yyvsp[0].Rec->resolveReferences();
 
@@ -1604,39 +1602,39 @@
   yyval.Rec = yyvsp[0].Rec;
 ;
     break;}
-case 80:
-#line 610 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 81:
+#line 600 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
   LetStack.back().push_back(LetRecord(*yyvsp[-3].StrVal, yyvsp[-2].BitList, yyvsp[0].Initializer));
   delete yyvsp[-3].StrVal; delete yyvsp[-2].BitList;
 ;
     break;}
-case 83:
-#line 618 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 84:
+#line 608 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 { LetStack.push_back(std::vector<LetRecord>()); ;
     break;}
-case 85:
-#line 621 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 86:
+#line 611 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     LetStack.pop_back();
   ;
     break;}
-case 86:
-#line 624 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+case 87:
+#line 614 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {
     LetStack.pop_back();
   ;
     break;}
-case 87:
-#line 628 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
-{;
-    break;}
 case 88:
-#line 628 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+#line 618 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {;
     break;}
 case 89:
-#line 630 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+#line 618 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+{;
+    break;}
+case 90:
+#line 620 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 {;
     break;}
 }
@@ -1861,7 +1859,7 @@
     }
   return 1;
 }
-#line 632 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
+#line 622 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y"
 
 
 int yyerror(const char *ErrorMsg) {


Index: llvm/utils/TableGen/FileParser.h.cvs
diff -u llvm/utils/TableGen/FileParser.h.cvs:1.2 llvm/utils/TableGen/FileParser.h.cvs:1.3
--- llvm/utils/TableGen/FileParser.h.cvs:1.2	Thu Mar 30 16:51:12 2006
+++ llvm/utils/TableGen/FileParser.h.cvs	Fri Mar 31 15:54:11 2006
@@ -25,11 +25,12 @@
 #define	SHLTOK	269
 #define	SRATOK	270
 #define	SRLTOK	271
-#define	INTVAL	272
-#define	ID	273
-#define	VARNAME	274
-#define	STRVAL	275
-#define	CODEFRAGMENT	276
+#define	STRCONCATTOK	272
+#define	INTVAL	273
+#define	ID	274
+#define	VARNAME	275
+#define	STRVAL	276
+#define	CODEFRAGMENT	277
 
 
 extern YYSTYPE Filelval;


Index: llvm/utils/TableGen/FileParser.y.cvs
diff -u llvm/utils/TableGen/FileParser.y.cvs:1.2 llvm/utils/TableGen/FileParser.y.cvs:1.3
--- llvm/utils/TableGen/FileParser.y.cvs:1.2	Thu Mar 30 16:51:12 2006
+++ llvm/utils/TableGen/FileParser.y.cvs	Fri Mar 31 15:54:11 2006
@@ -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 */ {






More information about the llvm-commits mailing list