[llvm-commits] [llvm] r51468 - in /llvm/trunk: include/llvm/Bitcode/LLVMBitCodes.h include/llvm/Type.h lib/AsmParser/LLLexer.cpp lib/AsmParser/llvmAsmParser.cpp.cvs lib/AsmParser/llvmAsmParser.h.cvs lib/AsmParser/llvmAsmParser.y lib/AsmParser/llvmAsmParser.y.cvs lib/Bitcode/Reader/BitcodeReader.cpp lib/Bitcode/Writer/BitcodeWriter.cpp lib/Bitcode/Writer/ValueEnumerator.cpp test/Assembler/insertextractvalue.ll test/Verifier/2006-07-11-StoreStruct.ll utils/llvm.grm

Dan Gohman gohman at apple.com
Thu May 22 18:55:30 PDT 2008


Author: djg
Date: Thu May 22 20:55:30 2008
New Revision: 51468

URL: http://llvm.org/viewvc/llvm-project?rev=51468&view=rev
Log:
Make structs and arrays first-class types, and add assembly
and bitcode support for the extractvalue and insertvalue
instructions and constant expressions.

Note that this does not yet include CodeGen support.

Added:
    llvm/trunk/test/Assembler/insertextractvalue.ll
Modified:
    llvm/trunk/include/llvm/Bitcode/LLVMBitCodes.h
    llvm/trunk/include/llvm/Type.h
    llvm/trunk/lib/AsmParser/LLLexer.cpp
    llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs
    llvm/trunk/lib/AsmParser/llvmAsmParser.h.cvs
    llvm/trunk/lib/AsmParser/llvmAsmParser.y
    llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs
    llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
    llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp
    llvm/trunk/lib/Bitcode/Writer/ValueEnumerator.cpp
    llvm/trunk/test/Verifier/2006-07-11-StoreStruct.ll
    llvm/trunk/utils/llvm.grm

Modified: llvm/trunk/include/llvm/Bitcode/LLVMBitCodes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/LLVMBitCodes.h?rev=51468&r1=51467&r2=51468&view=diff

==============================================================================
--- llvm/trunk/include/llvm/Bitcode/LLVMBitCodes.h (original)
+++ llvm/trunk/include/llvm/Bitcode/LLVMBitCodes.h Thu May 22 20:55:30 2008
@@ -125,7 +125,9 @@
     CST_CODE_CE_INSERTELT  = 15,  // CE_INSERTELT:  [opval, opval, opval]
     CST_CODE_CE_SHUFFLEVEC = 16,  // CE_SHUFFLEVEC: [opval, opval, opval]
     CST_CODE_CE_CMP        = 17,  // CE_CMP:        [opty, opval, opval, pred]
-    CST_CODE_INLINEASM     = 18   // INLINEASM:     [sideeffect,asmstr,conststr]
+    CST_CODE_INLINEASM     = 18,  // INLINEASM:     [sideeffect,asmstr,conststr]
+    CST_CODE_CE_EXTRACTVAL = 19,  // CE_EXTRACTVAL: [n x operands]
+    CST_CODE_CE_INSERTVAL  = 20   // CE_INSERTVAL:  [n x operands]
   };
   
   /// CastOpcodes - These are values used in the bitcode files to encode which
@@ -202,7 +204,9 @@
     // this is so information only available in the pointer type (e.g. address
     // spaces) is retained.
     FUNC_CODE_INST_STORE2      = 24, // STORE:      [ptrty,ptr,val, align, vol]
-    FUNC_CODE_INST_GETRESULT   = 25  // GETRESULT:  [ty, opval, n]
+    FUNC_CODE_INST_GETRESULT   = 25, // GETRESULT:  [ty, opval, n]
+    FUNC_CODE_INST_EXTRACTVAL  = 26, // EXTRACTVAL: [n x operands]
+    FUNC_CODE_INST_INSERTVAL   = 27  // INSERTVAL:  [n x operands]
   };
 } // End bitc namespace
 } // End llvm namespace

Modified: llvm/trunk/include/llvm/Type.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Type.h?rev=51468&r1=51467&r2=51468&view=diff

==============================================================================
--- llvm/trunk/include/llvm/Type.h (original)
+++ llvm/trunk/include/llvm/Type.h Thu May 22 20:55:30 2008
@@ -216,8 +216,8 @@
   /// is a valid type for a Value.
   ///
   inline bool isFirstClassType() const {
-    // Coming soon: first-class struct and array types...
-    return isSingleValueType();
+    return isSingleValueType() ||
+           ID == StructTyID || ID == ArrayTyID;
   }
 
   /// isSingleValueType - Return true if the type is a valid type for a

Modified: llvm/trunk/lib/AsmParser/LLLexer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLLexer.cpp?rev=51468&r1=51467&r2=51468&view=diff

==============================================================================
--- llvm/trunk/lib/AsmParser/LLLexer.cpp (original)
+++ llvm/trunk/lib/AsmParser/LLLexer.cpp Thu May 22 20:55:30 2008
@@ -605,6 +605,8 @@
   INSTKEYWORD("insertelement", OtherOpVal, InsertElement, INSERTELEMENT);
   INSTKEYWORD("shufflevector", OtherOpVal, ShuffleVector, SHUFFLEVECTOR);
   INSTKEYWORD("getresult", OtherOpVal, GetResult, GETRESULT);
+  INSTKEYWORD("extractvalue", OtherOpVal, ExtractValue, EXTRACTVALUE);
+  INSTKEYWORD("insertvalue", OtherOpVal, InsertValue, INSERTVALUE);
 #undef INSTKEYWORD
 
   // Check for [us]0x[0-9A-Fa-f]+ which are Hexadecimal constant generated by

Modified: llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs?rev=51468&r1=51467&r2=51468&view=diff

==============================================================================
--- llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs (original)
+++ llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs Thu May 22 20:55:30 2008
@@ -210,21 +210,23 @@
      INSERTELEMENT = 391,
      SHUFFLEVECTOR = 392,
      GETRESULT = 393,
-     SIGNEXT = 394,
-     ZEROEXT = 395,
-     NORETURN = 396,
-     INREG = 397,
-     SRET = 398,
-     NOUNWIND = 399,
-     NOALIAS = 400,
-     BYVAL = 401,
-     NEST = 402,
-     READNONE = 403,
-     READONLY = 404,
-     GC = 405,
-     DEFAULT = 406,
-     HIDDEN = 407,
-     PROTECTED = 408
+     EXTRACTVALUE = 394,
+     INSERTVALUE = 395,
+     SIGNEXT = 396,
+     ZEROEXT = 397,
+     NORETURN = 398,
+     INREG = 399,
+     SRET = 400,
+     NOUNWIND = 401,
+     NOALIAS = 402,
+     BYVAL = 403,
+     NEST = 404,
+     READNONE = 405,
+     READONLY = 406,
+     GC = 407,
+     DEFAULT = 408,
+     HIDDEN = 409,
+     PROTECTED = 410
    };
 #endif
 /* Tokens.  */
@@ -364,27 +366,29 @@
 #define INSERTELEMENT 391
 #define SHUFFLEVECTOR 392
 #define GETRESULT 393
-#define SIGNEXT 394
-#define ZEROEXT 395
-#define NORETURN 396
-#define INREG 397
-#define SRET 398
-#define NOUNWIND 399
-#define NOALIAS 400
-#define BYVAL 401
-#define NEST 402
-#define READNONE 403
-#define READONLY 404
-#define GC 405
-#define DEFAULT 406
-#define HIDDEN 407
-#define PROTECTED 408
+#define EXTRACTVALUE 394
+#define INSERTVALUE 395
+#define SIGNEXT 396
+#define ZEROEXT 397
+#define NORETURN 398
+#define INREG 399
+#define SRET 400
+#define NOUNWIND 401
+#define NOALIAS 402
+#define BYVAL 403
+#define NEST 404
+#define READNONE 405
+#define READONLY 406
+#define GC 407
+#define DEFAULT 408
+#define HIDDEN 409
+#define PROTECTED 410
 
 
 
 
 /* Copy the first part of user declarations.  */
-#line 14 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 14 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
 
 #include "ParserInternals.h"
 #include "llvm/CallingConv.h"
@@ -849,7 +853,7 @@
   if (TriggerError) return 0;
 
   if (!Ty->isFirstClassType() && !isa<OpaqueType>(Ty)) {
-    GenerateError("Invalid use of a composite type");
+    GenerateError("Invalid use of a non-first-class type");
     return 0;
   }
 
@@ -1340,7 +1344,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 949 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 949 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
 {
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
@@ -1388,7 +1392,7 @@
   llvm::FCmpInst::Predicate         FPredicate;
 }
 /* Line 193 of yacc.c.  */
-#line 1392 "llvmAsmParser.tab.c"
+#line 1396 "llvmAsmParser.tab.c"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -1401,7 +1405,7 @@
 
 
 /* Line 216 of yacc.c.  */
-#line 1405 "llvmAsmParser.tab.c"
+#line 1409 "llvmAsmParser.tab.c"
 
 #ifdef short
 # undef short
@@ -1616,20 +1620,20 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  44
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2040
+#define YYLAST   2144
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  168
+#define YYNTOKENS  170
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  85
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  327
+#define YYNRULES  331
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  656
+#define YYNSTATES  679
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   408
+#define YYMAXUTOK   410
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -1641,15 +1645,15 @@
        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,
-     154,   155,   158,     2,   157,     2,     2,     2,     2,     2,
+     156,   157,   160,     2,   159,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     163,   156,   164,     2,     2,     2,     2,     2,     2,     2,
+     165,   158,   166,     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,   160,   159,   162,     2,     2,     2,     2,     2,   167,
+       2,   162,   161,   164,     2,     2,     2,     2,     2,   169,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     161,     2,     2,   165,     2,   166,     2,     2,     2,     2,
+     163,     2,     2,   167,     2,   168,     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,
@@ -1677,7 +1681,8 @@
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153
+     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+     155
 };
 
 #if YYDEBUG
@@ -1705,25 +1710,26 @@
      375,   380,   384,   388,   393,   398,   402,   409,   415,   418,
      421,   424,   427,   430,   433,   436,   439,   442,   445,   448,
      451,   458,   464,   473,   480,   487,   495,   503,   511,   519,
-     526,   535,   544,   548,   550,   552,   554,   556,   557,   560,
-     567,   569,   570,   572,   575,   576,   580,   581,   585,   589,
-     593,   597,   598,   607,   608,   618,   619,   629,   635,   638,
-     642,   644,   648,   652,   656,   660,   662,   663,   669,   673,
-     675,   679,   681,   682,   693,   695,   697,   702,   704,   706,
-     709,   713,   714,   716,   718,   720,   722,   724,   726,   728,
-     730,   732,   736,   738,   744,   746,   748,   750,   752,   754,
-     756,   759,   761,   765,   768,   771,   775,   778,   779,   781,
-     784,   787,   791,   801,   811,   820,   835,   837,   839,   846,
-     852,   855,   862,   870,   875,   880,   887,   894,   895,   896,
-     900,   903,   905,   911,   917,   924,   931,   938,   945,   950,
-     957,   962,   967,   974,   981,   984,   993,   995,   997,   998,
-    1002,  1009,  1013,  1020,  1023,  1029,  1037,  1043
+     526,   535,   544,   550,   558,   562,   564,   566,   568,   570,
+     571,   574,   581,   583,   584,   586,   589,   590,   594,   595,
+     599,   603,   607,   611,   612,   621,   622,   632,   633,   643,
+     649,   652,   656,   658,   662,   666,   670,   674,   676,   677,
+     683,   687,   689,   693,   695,   696,   707,   709,   711,   716,
+     718,   720,   723,   727,   728,   730,   732,   734,   736,   738,
+     740,   742,   744,   746,   750,   752,   758,   760,   762,   764,
+     766,   768,   770,   773,   775,   779,   782,   785,   789,   792,
+     793,   795,   798,   801,   805,   815,   825,   834,   849,   851,
+     853,   860,   866,   869,   876,   884,   889,   894,   901,   908,
+     909,   910,   914,   917,   919,   925,   931,   938,   945,   952,
+     959,   964,   971,   976,   981,   988,   995,   998,  1007,  1009,
+    1011,  1012,  1016,  1023,  1027,  1034,  1037,  1043,  1051,  1057,
+    1062,  1067
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     214,     0,    -1,    75,    -1,    76,    -1,    77,    -1,    78,
+     216,     0,    -1,    75,    -1,    76,    -1,    77,    -1,    78,
       -1,    79,    -1,    80,    -1,    81,    -1,    82,    -1,    83,
       -1,    87,    -1,    88,    -1,    89,    -1,    84,    -1,    85,
       -1,    86,    -1,   120,    -1,   121,    -1,   122,    -1,   123,
@@ -1735,137 +1741,141 @@
       -1,   111,    -1,   112,    -1,   113,    -1,   100,    -1,   101,
       -1,   102,    -1,   103,    -1,    26,    -1,    27,    -1,    11,
       -1,    12,    -1,    13,    -1,    16,    -1,    15,    -1,    14,
-      -1,    19,    -1,    22,    -1,    24,    -1,   176,    -1,    -1,
-      55,   154,     4,   155,    -1,    -1,   176,   156,    -1,    -1,
-      20,    -1,    23,    -1,   182,    -1,    -1,   180,   156,    -1,
+      -1,    19,    -1,    22,    -1,    24,    -1,   178,    -1,    -1,
+      55,   156,     4,   157,    -1,    -1,   178,   158,    -1,    -1,
+      20,    -1,    23,    -1,   184,    -1,    -1,   182,   158,    -1,
       42,    -1,    44,    -1,    43,    -1,    45,    -1,    47,    -1,
-      49,    -1,    46,    -1,    48,    -1,    51,    -1,    -1,   151,
-      -1,   152,    -1,   153,    -1,    -1,    46,    -1,    48,    -1,
+      49,    -1,    46,    -1,    48,    -1,    51,    -1,    -1,   153,
+      -1,   154,    -1,   155,    -1,    -1,    46,    -1,    48,    -1,
       -1,    42,    -1,    43,    -1,    44,    -1,    47,    -1,    -1,
       44,    -1,    42,    -1,    -1,    63,    -1,    64,    -1,    65,
-      -1,    66,    -1,    67,    -1,    62,     4,    -1,   140,    -1,
-     121,    -1,   139,    -1,   122,    -1,   142,    -1,   143,    -1,
-     145,    -1,   146,    -1,   147,    -1,    54,     4,    -1,    -1,
-     191,   190,    -1,   141,    -1,   144,    -1,   140,    -1,   139,
-      -1,   148,    -1,   149,    -1,    -1,   193,   192,    -1,    -1,
-     150,    22,    -1,    -1,    54,     4,    -1,    -1,   157,    54,
-       4,    -1,    34,    22,    -1,    -1,   197,    -1,    -1,   157,
-     200,   199,    -1,   197,    -1,    54,     4,    -1,    11,    -1,
+      -1,    66,    -1,    67,    -1,    62,     4,    -1,   142,    -1,
+     121,    -1,   141,    -1,   122,    -1,   144,    -1,   145,    -1,
+     147,    -1,   148,    -1,   149,    -1,    54,     4,    -1,    -1,
+     193,   192,    -1,   143,    -1,   146,    -1,   142,    -1,   141,
+      -1,   150,    -1,   151,    -1,    -1,   195,   194,    -1,    -1,
+     152,    22,    -1,    -1,    54,     4,    -1,    -1,   159,    54,
+       4,    -1,    34,    22,    -1,    -1,   199,    -1,    -1,   159,
+     202,   201,    -1,   199,    -1,    54,     4,    -1,    11,    -1,
       12,    -1,    13,    -1,    16,    -1,    15,    -1,    14,    -1,
-      17,    -1,    50,    -1,   201,    -1,   202,   178,   158,    -1,
-     236,    -1,   159,     4,    -1,   202,   154,   206,   155,   193,
-      -1,    10,   154,   206,   155,   193,    -1,   160,     4,   161,
-     202,   162,    -1,   163,     4,   161,   202,   164,    -1,   165,
-     207,   166,    -1,   165,   166,    -1,   163,   165,   207,   166,
-     164,    -1,   163,   165,   166,   164,    -1,   202,   191,    -1,
-     202,    -1,    10,    -1,   203,    -1,   205,   157,   203,    -1,
-     205,    -1,   205,   157,    39,    -1,    39,    -1,    -1,   202,
-      -1,   207,   157,   202,    -1,   202,   160,   210,   162,    -1,
-     202,   160,   162,    -1,   202,   167,    22,    -1,   202,   163,
-     210,   164,    -1,   202,   165,   210,   166,    -1,   202,   165,
-     166,    -1,   202,   163,   165,   210,   166,   164,    -1,   202,
-     163,   165,   166,   164,    -1,   202,    40,    -1,   202,    41,
-      -1,   202,   236,    -1,   202,   209,    -1,   202,    25,    -1,
-     174,     3,    -1,   174,     5,    -1,   174,     4,    -1,   174,
-       6,    -1,    11,    26,    -1,    11,    27,    -1,   175,     9,
-      -1,   171,   154,   208,    38,   202,   155,    -1,   119,   154,
-     208,   248,   155,    -1,   133,   154,   208,   157,   208,   157,
-     208,   155,    -1,   169,   154,   208,   157,   208,   155,    -1,
-     170,   154,   208,   157,   208,   155,    -1,    90,   172,   154,
-     208,   157,   208,   155,    -1,    91,   173,   154,   208,   157,
-     208,   155,    -1,    92,   172,   154,   208,   157,   208,   155,
-      -1,    93,   173,   154,   208,   157,   208,   155,    -1,   135,
-     154,   208,   157,   208,   155,    -1,   136,   154,   208,   157,
-     208,   157,   208,   155,    -1,   137,   154,   208,   157,   208,
-     157,   208,   155,    -1,   210,   157,   208,    -1,   208,    -1,
-      32,    -1,    33,    -1,    37,    -1,    -1,   204,   236,    -1,
-     125,   154,   213,    38,   202,   155,    -1,   215,    -1,    -1,
-     216,    -1,   215,   216,    -1,    -1,    31,   217,   232,    -1,
-      -1,    30,   218,   233,    -1,    60,    59,   222,    -1,   179,
-      18,   202,    -1,   179,    18,    10,    -1,    -1,   181,   185,
-     212,   211,   208,   178,   219,   199,    -1,    -1,   181,   183,
-     185,   212,   211,   208,   178,   220,   199,    -1,    -1,   181,
-     184,   185,   212,   211,   202,   178,   221,   199,    -1,   181,
-     185,    35,   188,   213,    -1,    52,   223,    -1,    56,   156,
-     224,    -1,    22,    -1,    53,   156,    22,    -1,    68,   156,
-      22,    -1,   160,   225,   162,    -1,   225,   157,    22,    -1,
-      22,    -1,    -1,   226,   157,   202,   191,   177,    -1,   202,
-     191,   177,    -1,   226,    -1,   226,   157,    39,    -1,    39,
-      -1,    -1,   189,   204,   180,   154,   227,   155,   193,   198,
-     195,   194,    -1,    28,    -1,   165,    -1,   187,   185,   228,
-     229,    -1,    29,    -1,   166,    -1,   240,   231,    -1,   186,
-     185,   228,    -1,    -1,    61,    -1,     3,    -1,     4,    -1,
-       9,    -1,    26,    -1,    27,    -1,    40,    -1,    41,    -1,
-      25,    -1,   163,   210,   164,    -1,   209,    -1,    59,   234,
-      22,   157,    22,    -1,     7,    -1,     8,    -1,   176,    -1,
-     180,    -1,   236,    -1,   235,    -1,   202,   237,    -1,   238,
-      -1,   239,   157,   238,    -1,   240,   241,    -1,   230,   241,
-      -1,   242,   179,   243,    -1,   242,   245,    -1,    -1,    21,
-      -1,    69,   239,    -1,    69,    10,    -1,    70,    17,   237,
-      -1,    70,    11,   237,   157,    17,   237,   157,    17,   237,
-      -1,    71,   174,   237,   157,    17,   237,   160,   244,   162,
-      -1,    71,   174,   237,   157,    17,   237,   160,   162,    -1,
-      72,   189,   204,   237,   154,   247,   155,   193,    38,    17,
-     237,    73,    17,   237,    -1,    73,    -1,    74,    -1,   244,
-     174,   235,   157,    17,   237,    -1,   174,   235,   157,    17,
-     237,    -1,   179,   250,    -1,   202,   160,   237,   157,   237,
-     162,    -1,   246,   157,   160,   237,   157,   237,   162,    -1,
-     202,   191,   237,   191,    -1,    17,   191,   237,   191,    -1,
-     247,   157,   202,   191,   237,   191,    -1,   247,   157,    17,
-     191,   237,   191,    -1,    -1,    -1,   248,   157,   238,    -1,
-      58,    57,    -1,    57,    -1,   169,   202,   237,   157,   237,
-      -1,   170,   202,   237,   157,   237,    -1,    90,   172,   202,
-     237,   157,   237,    -1,    91,   173,   202,   237,   157,   237,
-      -1,    92,   172,   202,   237,   157,   237,    -1,    93,   173,
-     202,   237,   157,   237,    -1,   171,   238,    38,   202,    -1,
-     133,   238,   157,   238,   157,   238,    -1,   134,   238,   157,
-     202,    -1,   135,   238,   157,   238,    -1,   136,   238,   157,
-     238,   157,   238,    -1,   137,   238,   157,   238,   157,   238,
-      -1,   132,   246,    -1,   249,   189,   204,   237,   154,   247,
-     155,   193,    -1,   252,    -1,    36,    -1,    -1,   114,   202,
-     196,    -1,   114,   202,   157,    11,   237,   196,    -1,   115,
-     202,   196,    -1,   115,   202,   157,    11,   237,   196,    -1,
-     116,   238,    -1,   251,   117,   202,   237,   196,    -1,   251,
-     118,   238,   157,   202,   237,   196,    -1,   138,   202,   237,
-     157,     4,    -1,   119,   202,   237,   248,    -1
+      17,    -1,    50,    -1,   203,    -1,   204,   180,   160,    -1,
+     238,    -1,   161,     4,    -1,   204,   156,   208,   157,   195,
+      -1,    10,   156,   208,   157,   195,    -1,   162,     4,   163,
+     204,   164,    -1,   165,     4,   163,   204,   166,    -1,   167,
+     209,   168,    -1,   167,   168,    -1,   165,   167,   209,   168,
+     166,    -1,   165,   167,   168,   166,    -1,   204,   193,    -1,
+     204,    -1,    10,    -1,   205,    -1,   207,   159,   205,    -1,
+     207,    -1,   207,   159,    39,    -1,    39,    -1,    -1,   204,
+      -1,   209,   159,   204,    -1,   204,   162,   212,   164,    -1,
+     204,   162,   164,    -1,   204,   169,    22,    -1,   204,   165,
+     212,   166,    -1,   204,   167,   212,   168,    -1,   204,   167,
+     168,    -1,   204,   165,   167,   212,   168,   166,    -1,   204,
+     165,   167,   168,   166,    -1,   204,    40,    -1,   204,    41,
+      -1,   204,   238,    -1,   204,   211,    -1,   204,    25,    -1,
+     176,     3,    -1,   176,     5,    -1,   176,     4,    -1,   176,
+       6,    -1,    11,    26,    -1,    11,    27,    -1,   177,     9,
+      -1,   173,   156,   210,    38,   204,   157,    -1,   119,   156,
+     210,   250,   157,    -1,   133,   156,   210,   159,   210,   159,
+     210,   157,    -1,   171,   156,   210,   159,   210,   157,    -1,
+     172,   156,   210,   159,   210,   157,    -1,    90,   174,   156,
+     210,   159,   210,   157,    -1,    91,   175,   156,   210,   159,
+     210,   157,    -1,    92,   174,   156,   210,   159,   210,   157,
+      -1,    93,   175,   156,   210,   159,   210,   157,    -1,   135,
+     156,   210,   159,   210,   157,    -1,   136,   156,   210,   159,
+     210,   159,   210,   157,    -1,   137,   156,   210,   159,   210,
+     159,   210,   157,    -1,   139,   156,   210,   250,   157,    -1,
+     140,   156,   210,   159,   210,   250,   157,    -1,   212,   159,
+     210,    -1,   210,    -1,    32,    -1,    33,    -1,    37,    -1,
+      -1,   206,   238,    -1,   125,   156,   215,    38,   204,   157,
+      -1,   217,    -1,    -1,   218,    -1,   217,   218,    -1,    -1,
+      31,   219,   234,    -1,    -1,    30,   220,   235,    -1,    60,
+      59,   224,    -1,   181,    18,   204,    -1,   181,    18,    10,
+      -1,    -1,   183,   187,   214,   213,   210,   180,   221,   201,
+      -1,    -1,   183,   185,   187,   214,   213,   210,   180,   222,
+     201,    -1,    -1,   183,   186,   187,   214,   213,   204,   180,
+     223,   201,    -1,   183,   187,    35,   190,   215,    -1,    52,
+     225,    -1,    56,   158,   226,    -1,    22,    -1,    53,   158,
+      22,    -1,    68,   158,    22,    -1,   162,   227,   164,    -1,
+     227,   159,    22,    -1,    22,    -1,    -1,   228,   159,   204,
+     193,   179,    -1,   204,   193,   179,    -1,   228,    -1,   228,
+     159,    39,    -1,    39,    -1,    -1,   191,   206,   182,   156,
+     229,   157,   195,   200,   197,   196,    -1,    28,    -1,   167,
+      -1,   189,   187,   230,   231,    -1,    29,    -1,   168,    -1,
+     242,   233,    -1,   188,   187,   230,    -1,    -1,    61,    -1,
+       3,    -1,     4,    -1,     9,    -1,    26,    -1,    27,    -1,
+      40,    -1,    41,    -1,    25,    -1,   165,   212,   166,    -1,
+     211,    -1,    59,   236,    22,   159,    22,    -1,     7,    -1,
+       8,    -1,   178,    -1,   182,    -1,   238,    -1,   237,    -1,
+     204,   239,    -1,   240,    -1,   241,   159,   240,    -1,   242,
+     243,    -1,   232,   243,    -1,   244,   181,   245,    -1,   244,
+     247,    -1,    -1,    21,    -1,    69,   241,    -1,    69,    10,
+      -1,    70,    17,   239,    -1,    70,    11,   239,   159,    17,
+     239,   159,    17,   239,    -1,    71,   176,   239,   159,    17,
+     239,   162,   246,   164,    -1,    71,   176,   239,   159,    17,
+     239,   162,   164,    -1,    72,   191,   206,   239,   156,   249,
+     157,   195,    38,    17,   239,    73,    17,   239,    -1,    73,
+      -1,    74,    -1,   246,   176,   237,   159,    17,   239,    -1,
+     176,   237,   159,    17,   239,    -1,   181,   252,    -1,   204,
+     162,   239,   159,   239,   164,    -1,   248,   159,   162,   239,
+     159,   239,   164,    -1,   204,   193,   239,   193,    -1,    17,
+     193,   239,   193,    -1,   249,   159,   204,   193,   239,   193,
+      -1,   249,   159,    17,   193,   239,   193,    -1,    -1,    -1,
+     250,   159,   240,    -1,    58,    57,    -1,    57,    -1,   171,
+     204,   239,   159,   239,    -1,   172,   204,   239,   159,   239,
+      -1,    90,   174,   204,   239,   159,   239,    -1,    91,   175,
+     204,   239,   159,   239,    -1,    92,   174,   204,   239,   159,
+     239,    -1,    93,   175,   204,   239,   159,   239,    -1,   173,
+     240,    38,   204,    -1,   133,   240,   159,   240,   159,   240,
+      -1,   134,   240,   159,   204,    -1,   135,   240,   159,   240,
+      -1,   136,   240,   159,   240,   159,   240,    -1,   137,   240,
+     159,   240,   159,   240,    -1,   132,   248,    -1,   251,   191,
+     206,   239,   156,   249,   157,   195,    -1,   254,    -1,    36,
+      -1,    -1,   114,   204,   198,    -1,   114,   204,   159,    11,
+     239,   198,    -1,   115,   204,   198,    -1,   115,   204,   159,
+      11,   239,   198,    -1,   116,   240,    -1,   253,   117,   204,
+     239,   198,    -1,   253,   118,   240,   159,   204,   239,   198,
+      -1,   138,   204,   239,   159,     4,    -1,   119,   204,   239,
+     250,    -1,   139,   204,   239,   250,    -1,   140,   204,   239,
+     159,   204,   239,   250,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,  1111,  1111,  1111,  1111,  1111,  1111,  1111,  1111,  1111,
-    1111,  1112,  1112,  1112,  1112,  1112,  1112,  1113,  1113,  1113,
-    1113,  1113,  1113,  1114,  1114,  1114,  1114,  1114,  1114,  1117,
-    1117,  1118,  1118,  1119,  1119,  1120,  1120,  1121,  1121,  1125,
-    1125,  1126,  1126,  1127,  1127,  1128,  1128,  1129,  1129,  1130,
-    1130,  1131,  1131,  1132,  1133,  1138,  1139,  1139,  1139,  1139,
-    1139,  1141,  1141,  1141,  1142,  1142,  1144,  1145,  1149,  1153,
-    1158,  1158,  1160,  1161,  1166,  1172,  1173,  1174,  1175,  1176,
-    1177,  1181,  1182,  1183,  1187,  1188,  1189,  1190,  1194,  1195,
-    1196,  1200,  1201,  1202,  1203,  1204,  1208,  1209,  1210,  1213,
-    1214,  1215,  1216,  1217,  1218,  1219,  1226,  1227,  1228,  1229,
-    1230,  1231,  1232,  1233,  1234,  1235,  1239,  1240,  1245,  1246,
-    1247,  1248,  1249,  1250,  1253,  1254,  1259,  1260,  1267,  1268,
-    1274,  1275,  1284,  1292,  1293,  1298,  1299,  1300,  1305,  1318,
-    1318,  1318,  1318,  1318,  1318,  1318,  1321,  1325,  1329,  1336,
-    1341,  1349,  1378,  1403,  1408,  1418,  1428,  1432,  1442,  1449,
-    1458,  1465,  1470,  1475,  1482,  1483,  1490,  1497,  1505,  1511,
-    1523,  1551,  1567,  1594,  1622,  1648,  1668,  1694,  1714,  1726,
-    1733,  1799,  1809,  1819,  1825,  1835,  1841,  1851,  1856,  1861,
-    1874,  1886,  1907,  1915,  1921,  1932,  1937,  1942,  1947,  1952,
-    1958,  1964,  1973,  1977,  1985,  1985,  1988,  1988,  1991,  2003,
-    2024,  2029,  2037,  2038,  2042,  2042,  2046,  2046,  2049,  2052,
-    2076,  2088,  2087,  2099,  2098,  2108,  2107,  2118,  2158,  2161,
-    2167,  2177,  2181,  2186,  2188,  2193,  2198,  2207,  2217,  2228,
-    2232,  2241,  2250,  2255,  2384,  2384,  2386,  2395,  2395,  2397,
-    2402,  2414,  2418,  2423,  2427,  2431,  2435,  2439,  2443,  2447,
-    2451,  2455,  2480,  2484,  2494,  2498,  2502,  2507,  2514,  2514,
-    2520,  2529,  2534,  2539,  2543,  2552,  2561,  2570,  2574,  2582,
-    2589,  2593,  2598,  2608,  2627,  2636,  2722,  2726,  2733,  2744,
-    2757,  2767,  2778,  2788,  2799,  2807,  2817,  2824,  2827,  2828,
-    2835,  2839,  2844,  2860,  2877,  2891,  2905,  2919,  2933,  2945,
-    2953,  2960,  2966,  2972,  2978,  2993,  3083,  3088,  3092,  3099,
-    3106,  3114,  3121,  3129,  3137,  3151,  3168,  3176
+       0,  1112,  1112,  1112,  1112,  1112,  1112,  1112,  1112,  1112,
+    1112,  1113,  1113,  1113,  1113,  1113,  1113,  1114,  1114,  1114,
+    1114,  1114,  1114,  1115,  1115,  1115,  1115,  1115,  1115,  1118,
+    1118,  1119,  1119,  1120,  1120,  1121,  1121,  1122,  1122,  1126,
+    1126,  1127,  1127,  1128,  1128,  1129,  1129,  1130,  1130,  1131,
+    1131,  1132,  1132,  1133,  1134,  1139,  1140,  1140,  1140,  1140,
+    1140,  1142,  1142,  1142,  1143,  1143,  1145,  1146,  1150,  1154,
+    1159,  1159,  1161,  1162,  1167,  1173,  1174,  1175,  1176,  1177,
+    1178,  1182,  1183,  1184,  1188,  1189,  1190,  1191,  1195,  1196,
+    1197,  1201,  1202,  1203,  1204,  1205,  1209,  1210,  1211,  1214,
+    1215,  1216,  1217,  1218,  1219,  1220,  1227,  1228,  1229,  1230,
+    1231,  1232,  1233,  1234,  1235,  1236,  1240,  1241,  1246,  1247,
+    1248,  1249,  1250,  1251,  1254,  1255,  1260,  1261,  1268,  1269,
+    1275,  1276,  1285,  1293,  1294,  1299,  1300,  1301,  1306,  1319,
+    1319,  1319,  1319,  1319,  1319,  1319,  1322,  1326,  1330,  1337,
+    1342,  1350,  1379,  1404,  1409,  1419,  1429,  1433,  1443,  1450,
+    1459,  1466,  1471,  1476,  1483,  1484,  1491,  1498,  1506,  1512,
+    1524,  1552,  1568,  1595,  1623,  1649,  1669,  1695,  1715,  1727,
+    1734,  1800,  1810,  1820,  1826,  1836,  1842,  1852,  1857,  1862,
+    1875,  1887,  1908,  1916,  1922,  1933,  1938,  1943,  1948,  1953,
+    1959,  1965,  1971,  1992,  2016,  2020,  2028,  2028,  2031,  2031,
+    2034,  2046,  2067,  2072,  2080,  2081,  2085,  2085,  2089,  2089,
+    2092,  2095,  2119,  2131,  2130,  2142,  2141,  2151,  2150,  2161,
+    2201,  2204,  2210,  2220,  2224,  2229,  2231,  2236,  2241,  2250,
+    2260,  2271,  2275,  2284,  2293,  2298,  2427,  2427,  2429,  2438,
+    2438,  2440,  2445,  2457,  2461,  2466,  2470,  2474,  2478,  2482,
+    2486,  2490,  2494,  2498,  2523,  2527,  2537,  2541,  2545,  2550,
+    2557,  2557,  2563,  2572,  2577,  2582,  2586,  2595,  2604,  2613,
+    2617,  2625,  2632,  2636,  2641,  2651,  2670,  2679,  2765,  2769,
+    2776,  2787,  2800,  2810,  2821,  2831,  2842,  2850,  2860,  2867,
+    2870,  2871,  2878,  2882,  2887,  2903,  2920,  2934,  2948,  2962,
+    2976,  2988,  2996,  3003,  3009,  3015,  3021,  3036,  3126,  3131,
+    3135,  3142,  3149,  3157,  3164,  3172,  3180,  3194,  3211,  3219,
+    3234,  3249
 };
 #endif
 
@@ -1895,18 +1905,18 @@
   "TRUNC", "ZEXT", "SEXT", "FPTRUNC", "FPEXT", "BITCAST", "UITOFP",
   "SITOFP", "FPTOUI", "FPTOSI", "INTTOPTR", "PTRTOINT", "PHI_TOK",
   "SELECT", "VAARG", "EXTRACTELEMENT", "INSERTELEMENT", "SHUFFLEVECTOR",
-  "GETRESULT", "SIGNEXT", "ZEROEXT", "NORETURN", "INREG", "SRET",
-  "NOUNWIND", "NOALIAS", "BYVAL", "NEST", "READNONE", "READONLY", "GC",
-  "DEFAULT", "HIDDEN", "PROTECTED", "'('", "')'", "'='", "','", "'*'",
-  "'\\\\'", "'['", "'x'", "']'", "'<'", "'>'", "'{'", "'}'", "'c'",
-  "$accept", "ArithmeticOps", "LogicalOps", "CastOps", "IPredicates",
-  "FPredicates", "IntType", "FPType", "LocalName", "OptLocalName",
-  "OptAddrSpace", "OptLocalAssign", "GlobalName", "OptGlobalAssign",
-  "GlobalAssign", "GVInternalLinkage", "GVExternalLinkage",
-  "GVVisibilityStyle", "FunctionDeclareLinkage", "FunctionDefineLinkage",
-  "AliasLinkage", "OptCallingConv", "ParamAttr", "OptParamAttrs",
-  "FuncAttr", "OptFuncAttrs", "OptGC", "OptAlign", "OptCAlign",
-  "SectionString", "OptSection", "GlobalVarAttributes",
+  "GETRESULT", "EXTRACTVALUE", "INSERTVALUE", "SIGNEXT", "ZEROEXT",
+  "NORETURN", "INREG", "SRET", "NOUNWIND", "NOALIAS", "BYVAL", "NEST",
+  "READNONE", "READONLY", "GC", "DEFAULT", "HIDDEN", "PROTECTED", "'('",
+  "')'", "'='", "','", "'*'", "'\\\\'", "'['", "'x'", "']'", "'<'", "'>'",
+  "'{'", "'}'", "'c'", "$accept", "ArithmeticOps", "LogicalOps", "CastOps",
+  "IPredicates", "FPredicates", "IntType", "FPType", "LocalName",
+  "OptLocalName", "OptAddrSpace", "OptLocalAssign", "GlobalName",
+  "OptGlobalAssign", "GlobalAssign", "GVInternalLinkage",
+  "GVExternalLinkage", "GVVisibilityStyle", "FunctionDeclareLinkage",
+  "FunctionDefineLinkage", "AliasLinkage", "OptCallingConv", "ParamAttr",
+  "OptParamAttrs", "FuncAttr", "OptFuncAttrs", "OptGC", "OptAlign",
+  "OptCAlign", "SectionString", "OptSection", "GlobalVarAttributes",
   "GlobalVarAttribute", "PrimType", "Types", "ArgType", "ResultTypes",
   "ArgTypeList", "ArgTypeListI", "TypeListI", "ConstVal", "ConstExpr",
   "ConstVector", "GlobalType", "ThreadLocal", "AliaseeRef", "Module",
@@ -1941,47 +1951,48 @@
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
-     405,   406,   407,   408,    40,    41,    61,    44,    42,    92,
-      91,   120,    93,    60,    62,   123,   125,    99
+     405,   406,   407,   408,   409,   410,    40,    41,    61,    44,
+      42,    92,    91,   120,    93,    60,    62,   123,   125,    99
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   168,   169,   169,   169,   169,   169,   169,   169,   169,
-     169,   170,   170,   170,   170,   170,   170,   171,   171,   171,
-     171,   171,   171,   171,   171,   171,   171,   171,   171,   172,
-     172,   172,   172,   172,   172,   172,   172,   172,   172,   173,
-     173,   173,   173,   173,   173,   173,   173,   173,   173,   173,
-     173,   173,   173,   173,   173,   174,   175,   175,   175,   175,
-     175,   176,   176,   176,   177,   177,   178,   178,   179,   179,
-     180,   180,   181,   181,   182,   183,   183,   183,   183,   183,
-     183,   184,   184,   184,   185,   185,   185,   185,   186,   186,
-     186,   187,   187,   187,   187,   187,   188,   188,   188,   189,
-     189,   189,   189,   189,   189,   189,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   191,   191,   192,   192,
-     192,   192,   192,   192,   193,   193,   194,   194,   195,   195,
-     196,   196,   197,   198,   198,   199,   199,   200,   200,   201,
-     201,   201,   201,   201,   201,   201,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   203,
-     204,   204,   205,   205,   206,   206,   206,   206,   207,   207,
-     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
-     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
-     209,   209,   209,   209,   209,   209,   209,   209,   209,   209,
-     209,   209,   210,   210,   211,   211,   212,   212,   213,   213,
-     214,   214,   215,   215,   217,   216,   218,   216,   216,   216,
-     216,   219,   216,   220,   216,   221,   216,   216,   216,   216,
-     222,   223,   223,   224,   225,   225,   225,   226,   226,   227,
-     227,   227,   227,   228,   229,   229,   230,   231,   231,   232,
-     233,   234,   234,   235,   235,   235,   235,   235,   235,   235,
-     235,   235,   235,   235,   236,   236,   236,   236,   237,   237,
-     238,   239,   239,   240,   240,   241,   242,   242,   242,   243,
-     243,   243,   243,   243,   243,   243,   243,   243,   244,   244,
-     245,   246,   246,   247,   247,   247,   247,   247,   248,   248,
-     249,   249,   250,   250,   250,   250,   250,   250,   250,   250,
-     250,   250,   250,   250,   250,   250,   250,   251,   251,   252,
-     252,   252,   252,   252,   252,   252,   252,   252
+       0,   170,   171,   171,   171,   171,   171,   171,   171,   171,
+     171,   172,   172,   172,   172,   172,   172,   173,   173,   173,
+     173,   173,   173,   173,   173,   173,   173,   173,   173,   174,
+     174,   174,   174,   174,   174,   174,   174,   174,   174,   175,
+     175,   175,   175,   175,   175,   175,   175,   175,   175,   175,
+     175,   175,   175,   175,   175,   176,   177,   177,   177,   177,
+     177,   178,   178,   178,   179,   179,   180,   180,   181,   181,
+     182,   182,   183,   183,   184,   185,   185,   185,   185,   185,
+     185,   186,   186,   186,   187,   187,   187,   187,   188,   188,
+     188,   189,   189,   189,   189,   189,   190,   190,   190,   191,
+     191,   191,   191,   191,   191,   191,   192,   192,   192,   192,
+     192,   192,   192,   192,   192,   192,   193,   193,   194,   194,
+     194,   194,   194,   194,   195,   195,   196,   196,   197,   197,
+     198,   198,   199,   200,   200,   201,   201,   202,   202,   203,
+     203,   203,   203,   203,   203,   203,   204,   204,   204,   204,
+     204,   204,   204,   204,   204,   204,   204,   204,   204,   205,
+     206,   206,   207,   207,   208,   208,   208,   208,   209,   209,
+     210,   210,   210,   210,   210,   210,   210,   210,   210,   210,
+     210,   210,   210,   210,   210,   210,   210,   210,   210,   210,
+     211,   211,   211,   211,   211,   211,   211,   211,   211,   211,
+     211,   211,   211,   211,   212,   212,   213,   213,   214,   214,
+     215,   215,   216,   216,   217,   217,   219,   218,   220,   218,
+     218,   218,   218,   221,   218,   222,   218,   223,   218,   218,
+     218,   218,   224,   225,   225,   226,   227,   227,   227,   228,
+     228,   229,   229,   229,   229,   230,   231,   231,   232,   233,
+     233,   234,   235,   236,   236,   237,   237,   237,   237,   237,
+     237,   237,   237,   237,   237,   237,   238,   238,   238,   238,
+     239,   239,   240,   241,   241,   242,   242,   243,   244,   244,
+     244,   245,   245,   245,   245,   245,   245,   245,   245,   245,
+     246,   246,   247,   248,   248,   249,   249,   249,   249,   249,
+     250,   250,   251,   251,   252,   252,   252,   252,   252,   252,
+     252,   252,   252,   252,   252,   252,   252,   252,   252,   253,
+     253,   254,   254,   254,   254,   254,   254,   254,   254,   254,
+     254,   254
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -2007,19 +2018,20 @@
        4,     3,     3,     4,     4,     3,     6,     5,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        6,     5,     8,     6,     6,     7,     7,     7,     7,     6,
-       8,     8,     3,     1,     1,     1,     1,     0,     2,     6,
-       1,     0,     1,     2,     0,     3,     0,     3,     3,     3,
-       3,     0,     8,     0,     9,     0,     9,     5,     2,     3,
-       1,     3,     3,     3,     3,     1,     0,     5,     3,     1,
-       3,     1,     0,    10,     1,     1,     4,     1,     1,     2,
-       3,     0,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     3,     1,     5,     1,     1,     1,     1,     1,     1,
-       2,     1,     3,     2,     2,     3,     2,     0,     1,     2,
-       2,     3,     9,     9,     8,    14,     1,     1,     6,     5,
-       2,     6,     7,     4,     4,     6,     6,     0,     0,     3,
-       2,     1,     5,     5,     6,     6,     6,     6,     4,     6,
-       4,     4,     6,     6,     2,     8,     1,     1,     0,     3,
-       6,     3,     6,     2,     5,     7,     5,     4
+       8,     8,     5,     7,     3,     1,     1,     1,     1,     0,
+       2,     6,     1,     0,     1,     2,     0,     3,     0,     3,
+       3,     3,     3,     0,     8,     0,     9,     0,     9,     5,
+       2,     3,     1,     3,     3,     3,     3,     1,     0,     5,
+       3,     1,     3,     1,     0,    10,     1,     1,     4,     1,
+       1,     2,     3,     0,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     3,     1,     5,     1,     1,     1,     1,
+       1,     1,     2,     1,     3,     2,     2,     3,     2,     0,
+       1,     2,     2,     3,     9,     9,     8,    14,     1,     1,
+       6,     5,     2,     6,     7,     4,     4,     6,     6,     0,
+       0,     3,     2,     1,     5,     5,     6,     6,     6,     6,
+       4,     6,     4,     4,     6,     6,     2,     8,     1,     1,
+       0,     3,     6,     3,     6,     2,     5,     7,     5,     4,
+       4,     7
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -2027,596 +2039,620 @@
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-      73,    61,    70,    62,    71,    63,   216,   214,     0,     0,
-       0,     0,     0,     0,    84,    72,     0,    73,   212,    88,
-      91,     0,     0,   228,     0,     0,    68,     0,    74,    75,
+      73,    61,    70,    62,    71,    63,   218,   216,     0,     0,
+       0,     0,     0,     0,    84,    72,     0,    73,   214,    88,
+      91,     0,     0,   230,     0,     0,    68,     0,    74,    75,
       77,    76,    78,    81,    79,    82,    80,    83,    85,    86,
-      87,    84,    84,   207,     1,   213,    89,    90,    84,   217,
-      92,    93,    94,    95,    84,   277,   215,   277,     0,     0,
-     236,   229,   230,   218,   264,   265,   220,   139,   140,   141,
-     144,   143,   142,   145,   146,     0,     0,     0,     0,   266,
-     267,   147,   219,   149,   207,   207,    96,   206,     0,    99,
-      99,   278,   274,    69,   247,   248,   249,   273,   231,   232,
-     235,     0,   167,   150,     0,     0,     0,     0,   156,   168,
-       0,     0,   167,     0,     0,     0,    98,    97,     0,   204,
-     205,     0,     0,   100,   101,   102,   103,   104,     0,   250,
-       0,   318,   276,     0,   233,   166,   116,   162,   164,     0,
+      87,    84,    84,   209,     1,   215,    89,    90,    84,   219,
+      92,    93,    94,    95,    84,   279,   217,   279,     0,     0,
+     238,   231,   232,   220,   266,   267,   222,   139,   140,   141,
+     144,   143,   142,   145,   146,     0,     0,     0,     0,   268,
+     269,   147,   221,   149,   209,   209,    96,   208,     0,    99,
+      99,   280,   276,    69,   249,   250,   251,   275,   233,   234,
+     237,     0,   167,   150,     0,     0,     0,     0,   156,   168,
+       0,     0,   167,     0,     0,     0,    98,    97,     0,   206,
+     207,     0,     0,   100,   101,   102,   103,   104,     0,   252,
+       0,   320,   278,     0,   235,   166,   116,   162,   164,     0,
        0,     0,     0,     0,     0,   155,     0,     0,   148,     0,
-       0,   161,     0,   160,     0,   227,   139,   140,   141,   144,
-     143,   142,     0,     0,    67,    67,   105,     0,   244,   245,
-     246,   317,   301,     0,     0,     0,     0,    99,   286,   287,
+       0,   161,     0,   160,     0,   229,   139,   140,   141,   144,
+     143,   142,     0,     0,    67,    67,   105,     0,   246,   247,
+     248,   319,   303,     0,     0,     0,     0,    99,   288,   289,
        2,     3,     4,     5,     6,     7,     8,     9,    10,    14,
       15,    16,    11,    12,    13,     0,     0,     0,     0,     0,
        0,     0,     0,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   275,    99,   290,     0,   316,
-     234,   159,     0,   124,    67,    67,   158,     0,   169,     0,
-     124,    67,    67,     0,   208,   187,   188,   183,   185,   184,
-     186,   189,   182,   178,   179,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   277,    99,   292,
+       0,   318,   236,   159,     0,   124,    67,    67,   158,     0,
+     169,     0,   124,    67,    67,     0,   210,   187,   188,   183,
+     185,   184,   186,   189,   182,   178,   179,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   181,   180,   221,     0,   300,   280,    67,   271,   279,
-       0,     0,    55,     0,     0,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,     0,    53,    54,    49,    50,
-      51,    52,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,     0,     0,     0,   130,   130,   323,    67,    67,
-     314,     0,     0,     0,     0,     0,    67,    67,    67,     0,
-       0,     0,     0,     0,   107,   109,   108,   106,   110,   111,
-     112,   113,   114,   117,   165,   163,   152,   153,   154,   157,
-      66,   151,   223,   225,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   171,   203,     0,     0,     0,   175,
-       0,   172,     0,     0,     0,   135,   242,   253,   254,   255,
-     260,   256,   257,   258,   259,   251,     0,   262,   269,   268,
-     270,     0,     0,   281,     0,     0,    67,    67,    67,    67,
-       0,   319,     0,   321,   298,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    67,     0,   115,
+       0,     0,     0,     0,     0,   181,   180,   223,     0,   302,
+     282,    67,   273,   281,     0,     0,    55,     0,     0,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,     0,
+      53,    54,    49,    50,    51,    52,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,     0,     0,     0,   130,
+     130,   325,    67,    67,   316,     0,     0,     0,     0,     0,
+      67,    67,    67,    67,    67,     0,     0,     0,     0,     0,
+     107,   109,   108,   106,   110,   111,   112,   113,   114,   117,
+     165,   163,   152,   153,   154,   157,    66,   151,   225,   227,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   171,   205,     0,     0,     0,   175,     0,   172,
+       0,     0,     0,   135,   244,   255,   256,   257,   262,   258,
+     259,   260,   261,   253,     0,   264,   271,   270,   272,     0,
+       0,   283,     0,     0,    67,    67,    67,    67,     0,   321,
+       0,   323,   300,     0,     0,     0,     0,     0,     0,     0,
+       0,   300,     0,     0,     0,     0,     0,    67,     0,   115,
      121,   120,   118,   119,   122,   123,   125,   135,   135,     0,
-       0,     0,     0,     0,   298,     0,     0,     0,     0,     0,
-     170,   156,   168,     0,   173,   174,     0,     0,     0,     0,
-     222,   241,   116,   239,     0,   252,     0,     0,   272,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   327,
-       0,     0,     0,   310,   311,     0,     0,     0,     0,     0,
-     308,     0,   130,     0,   224,   226,    67,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   202,   177,     0,     0,
-       0,     0,     0,     0,   137,   135,    65,     0,   124,     0,
-     261,     0,     0,   297,     0,     0,     0,     0,   130,   131,
-     130,     0,     0,     0,     0,     0,     0,   326,   302,   303,
-     297,     0,   324,    67,   209,     0,     0,     0,     0,   191,
-       0,     0,     0,     0,   176,     0,     0,    67,   132,   138,
-     136,    64,   238,   240,   116,   133,     0,     0,     0,   116,
-     116,     0,   304,   305,   306,   307,   320,   322,   299,     0,
-       0,   309,   312,   313,     0,   130,     0,     0,     0,     0,
-       0,   199,     0,     0,   193,   194,   190,    65,   134,   128,
-     263,     0,     0,     0,     0,   124,     0,   291,     0,   124,
-     325,   195,   196,   197,   198,     0,     0,     0,   237,     0,
-     126,     0,   284,     0,     0,   107,   109,   116,   116,     0,
-     116,   116,   292,   315,   192,   200,   201,   129,     0,   243,
-     282,     0,   283,     0,   294,   293,     0,     0,     0,   127,
-       0,     0,     0,   116,   116,     0,     0,     0,   296,   295,
-     289,     0,     0,   288,     0,   285
+       0,     0,     0,     0,   300,     0,     0,     0,     0,   300,
+       0,     0,   170,   156,   168,     0,   173,   174,     0,     0,
+       0,     0,   224,   243,   116,   241,     0,   254,     0,     0,
+     274,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   329,     0,     0,     0,   312,   313,     0,     0,     0,
+     330,     0,     0,     0,   310,     0,   130,     0,   226,   228,
+      67,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   204,   177,     0,     0,     0,     0,     0,     0,
+     137,   135,    65,     0,   124,     0,   263,     0,     0,   299,
+       0,     0,     0,     0,   130,   131,   130,     0,     0,     0,
+       0,     0,     0,   328,    67,   304,   305,   299,     0,   326,
+      67,   211,     0,     0,     0,     0,   191,     0,     0,     0,
+       0,   202,   300,   176,     0,     0,    67,   132,   138,   136,
+      64,   240,   242,   116,   133,     0,     0,     0,   116,   116,
+       0,   306,   307,   308,   309,   322,   324,   301,     0,     0,
+     311,   314,   315,   300,     0,   130,     0,     0,     0,     0,
+       0,   199,     0,     0,     0,   193,   194,   190,    65,   134,
+     128,   265,     0,     0,     0,     0,   124,     0,   293,     0,
+     331,   124,   327,   195,   196,   197,   198,     0,     0,     0,
+     203,   239,     0,   126,     0,   286,     0,     0,   107,   109,
+     116,   116,     0,   116,   116,   294,   317,   192,   200,   201,
+     129,     0,   245,   284,     0,   285,     0,   296,   295,     0,
+       0,     0,   127,     0,     0,     0,   116,   116,     0,     0,
+       0,   298,   297,   291,     0,     0,   290,     0,   287
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,   268,   269,   270,   295,   312,   162,   163,    79,   552,
+      -1,   272,   273,   274,   299,   316,   162,   163,    79,   571,
      113,    12,    80,    14,    15,    41,    42,    43,    48,    54,
-     118,   128,   343,   231,   426,   346,   629,   610,   401,   504,
-     589,   450,   505,    81,   164,   137,   154,   138,   139,   110,
-     365,   387,   366,   121,    88,   155,    16,    17,    18,    20,
-      19,   375,   427,   428,    63,    23,    61,   101,   453,   454,
-     129,   170,    55,    96,    56,    49,   456,   388,    83,   390,
-     278,   279,    57,    92,    93,   225,   614,   132,   320,   561,
-     469,   226,   227,   228,   229
+     118,   128,   349,   233,   436,   352,   652,   633,   409,   520,
+     610,   462,   521,    81,   164,   137,   154,   138,   139,   110,
+     373,   395,   374,   121,    88,   155,    16,    17,    18,    20,
+      19,   383,   437,   438,    63,    23,    61,   101,   465,   466,
+     129,   170,    55,    96,    56,    49,   468,   396,    83,   398,
+     282,   283,    57,    92,    93,   227,   637,   132,   324,   580,
+     481,   228,   229,   230,   231
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -560
+#define YYPACT_NINF -578
 static const yytype_int16 yypact[] =
 {
-     590,  -560,  -560,  -560,  -560,  -560,  -560,  -560,     9,  -119,
-      23,   -66,    80,   -43,    -1,  -560,   132,   897,  -560,   131,
-     219,    16,    43,  -560,    48,   203,  -560,  1564,  -560,  -560,
-    -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,
-    -560,    -6,    -6,   230,  -560,  -560,  -560,  -560,    -6,  -560,
-    -560,  -560,  -560,  -560,    -6,   211,  -560,   -10,   223,   234,
-     246,  -560,  -560,  -560,  -560,  -560,   119,  -560,  -560,  -560,
-    -560,  -560,  -560,  -560,  -560,   289,   296,     2,   227,  -560,
-    -560,  -560,     3,  -560,   266,   266,   247,  -560,    34,   121,
-     121,  -560,  -560,   233,  -560,  -560,  -560,  -560,  -560,  -560,
-    -560,    67,  1400,  -560,   146,   151,   830,   119,  -560,     3,
-    -102,   171,  1400,   159,    34,    34,  -560,  -560,  1441,  -560,
-    -560,  1682,   322,  -560,  -560,  -560,  -560,  -560,  1723,  -560,
-     -16,  1902,  -560,   306,  -560,  -560,     3,  -560,   172,   176,
-    1741,  1741,   168,  -101,  1741,  -560,   332,   182,  -560,  1682,
-    1741,   119,   184,     3,   252,  -560,   102,   335,   339,   340,
-     343,   345,   106,   346,  1164,   303,  -560,   213,  -560,  -560,
-    -560,  -560,  -560,   302,  1764,    52,   349,   121,  -560,  -560,
-    -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,
-    -560,  -560,  -560,  -560,  -560,   591,   440,   591,   440,  1741,
-    1741,  1741,  1741,  -560,  -560,  -560,  -560,  -560,  -560,  -560,
-    -560,  -560,  -560,  -560,  -560,  1741,  1741,  1741,  1741,  1741,
-    1741,  1741,  1741,  1741,  1741,  -560,   121,  -560,    36,  -560,
-    -560,   200,  1461,  -560,   -20,   -37,  -560,   198,     3,   215,
-    -560,   303,     4,  1441,  -560,  -560,  -560,  -560,  -560,  -560,
-    -560,  -560,  -560,  -560,  -560,   591,   440,   591,   440,   217,
-     218,   220,   222,   224,  1482,  1782,  1061,   351,   225,   226,
-     237,  -560,  -560,  -560,   240,  -560,   119,   742,  -560,   231,
-     884,   884,  -560,   884,  1723,  -560,  -560,  -560,  -560,  -560,
-    -560,  -560,  -560,  -560,  -560,  1741,  -560,  -560,  -560,  -560,
-    -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,
-    -560,  -560,  1741,  1741,  1741,   -21,    24,  -560,   742,   -35,
-     238,   241,   249,   254,   255,   256,   742,   742,   742,   366,
-    1723,  1741,  1741,   373,  -560,  -560,  -560,  -560,  -560,  -560,
-    -560,  -560,  -560,  -560,  -560,  -560,   175,  -560,  -560,  -560,
-    -560,   175,  -560,   159,   371,   260,   261,   262,   263,  1682,
-    1682,  1682,  1682,  1682,  -560,  -560,    91,  1105,   -96,  -560,
-     -69,  -560,  1682,  1682,  1682,   264,  1502,  -560,  -560,  -560,
-    -560,  -560,  -560,  -560,  -560,   359,  1682,  -560,  -560,  -560,
-    -560,  1741,   265,  -560,   267,   884,   742,   742,   742,   742,
-      21,  -560,    40,  -560,  -560,   884,   272,  1741,  1741,  1741,
-    1741,  1741,   268,   269,   270,  1741,   884,   742,   276,  -560,
-    -560,  -560,  -560,  -560,  -560,  -560,  -560,   264,   264,  1741,
-    1682,  1682,  1682,  1682,  -560,   277,   280,   281,   282,  1682,
-    -560,   259,  1015,   -62,  -560,  -560,   287,   290,   408,    19,
-    -560,  -560,     3,   291,   294,  -560,   428,   -61,  -560,   434,
-     435,   299,   297,   301,   304,   305,   884,   452,   884,   307,
-     308,   884,   311,     3,  -560,   312,   313,   455,   884,   884,
-       3,   309,   319,  1741,  -560,  -560,   -15,   320,   325,   326,
-     327,   137,  1682,  1682,  1682,  1682,  -560,  -560,   321,  1682,
-    1682,  1741,   438,   482,  -560,   264,   386,  1523,  -560,   334,
-    -560,   884,   884,  1805,   884,   884,   884,   884,   319,  -560,
-     319,  1741,   884,   336,  1741,  1741,  1741,  -560,  -560,  -560,
-    1805,   443,  -560,   742,  -560,  1682,  1682,  1682,  1682,  -560,
-     337,   347,   344,   348,  -560,   354,   355,    15,  -560,  -560,
-    -560,  -560,  -560,  -560,     3,   -18,   470,   356,   352,     5,
-       3,   156,  -560,  -560,  -560,  -560,  -560,  -560,  -560,   341,
-     884,  -560,  -560,  -560,   163,   319,   360,   362,   365,   369,
-    1682,  -560,  1682,  1682,  -560,  -560,  -560,   386,  -560,   457,
-    -560,   497,    -7,   577,   577,  -560,  1846,  -560,   372,  -560,
-    -560,  -560,  -560,  -560,  -560,   380,   382,   383,  -560,   517,
-     404,   884,  -560,  1307,    -2,   401,   402,  -560,  -560,    82,
-       5,     3,  -560,   175,  -560,  -560,  -560,  -560,   540,  -560,
-    -560,   406,  -560,  1307,   200,   200,   547,   577,   577,  -560,
-     548,   409,   884,  -560,  -560,   884,   551,   496,   200,   200,
-    -560,   884,   554,  -560,   884,  -560
+     348,  -578,  -578,  -578,  -578,  -578,  -578,  -578,    42,  -145,
+      -8,   -70,    59,   -15,    -2,  -578,   154,  1288,  -578,   155,
+     317,     4,    24,  -578,    -4,   157,  -578,  1678,  -578,  -578,
+    -578,  -578,  -578,  -578,  -578,  -578,  -578,  -578,  -578,  -578,
+    -578,   133,   133,   203,  -578,  -578,  -578,  -578,   133,  -578,
+    -578,  -578,  -578,  -578,   133,   183,  -578,    -5,   191,   194,
+     204,  -578,  -578,  -578,  -578,  -578,    73,  -578,  -578,  -578,
+    -578,  -578,  -578,  -578,  -578,   235,   238,    11,   244,  -578,
+    -578,  -578,    87,  -578,   212,   212,   261,  -578,   100,   321,
+     321,  -578,  -578,   250,  -578,  -578,  -578,  -578,  -578,  -578,
+    -578,   -47,    50,  -578,   102,   107,   787,    73,  -578,    87,
+     -81,   141,    50,   129,   100,   100,  -578,  -578,  1362,  -578,
+    -578,  1722,   303,  -578,  -578,  -578,  -578,  -578,  1780,  -578,
+     -17,  2004,  -578,   302,  -578,  -578,    87,  -578,   173,   189,
+    1840,  1840,   181,   -61,  1840,  -578,   346,   200,  -578,  1722,
+    1840,    73,   195,    87,   294,  -578,    79,   360,   365,   371,
+     372,   385,   272,   388,  1425,   343,  -578,    30,  -578,  -578,
+    -578,  -578,  -578,   344,  1858,   220,   391,   321,  -578,  -578,
+    -578,  -578,  -578,  -578,  -578,  -578,  -578,  -578,  -578,  -578,
+    -578,  -578,  -578,  -578,  -578,   668,   443,   668,   443,  1840,
+    1840,  1840,  1840,  -578,  -578,  -578,  -578,  -578,  -578,  -578,
+    -578,  -578,  -578,  -578,  -578,  1840,  1840,  1840,  1840,  1840,
+    1840,  1840,  1840,  1840,  1840,  1840,  1840,  -578,   321,  -578,
+      53,  -578,  -578,   178,  1560,  -578,   -20,   -27,  -578,   241,
+      87,   253,  -578,   343,    16,  1362,  -578,  -578,  -578,  -578,
+    -578,  -578,  -578,  -578,  -578,  -578,  -578,   668,   443,   668,
+     443,   258,   264,   268,   275,   278,   280,   281,  1601,  1887,
+    1046,   395,   282,   284,   287,  -578,  -578,  -578,   288,  -578,
+      73,   996,  -578,   266,  1140,  1140,  -578,  1140,  1780,  -578,
+    -578,  -578,  -578,  -578,  -578,  -578,  -578,  -578,  -578,  1840,
+    -578,  -578,  -578,  -578,  -578,  -578,  -578,  -578,  -578,  -578,
+    -578,  -578,  -578,  -578,  -578,  -578,  1840,  1840,  1840,    68,
+      85,  -578,   996,   -25,   271,   286,   289,   290,   291,   299,
+     996,   996,   996,   996,   996,   408,  1780,  1840,  1840,   455,
+    -578,  -578,  -578,  -578,  -578,  -578,  -578,  -578,  -578,  -578,
+    -578,  -578,   188,  -578,  -578,  -578,  -578,   188,  -578,   129,
+     409,   304,   305,   306,   308,  1722,  1722,  1722,  1722,  1722,
+    1722,  1722,  -578,  -578,    89,  1087,   -58,  -578,   -48,  -578,
+    1722,  1722,  1722,   313,  1619,  -578,  -578,  -578,  -578,  -578,
+    -578,  -578,  -578,   412,  1722,  -578,  -578,  -578,  -578,  1840,
+     315,  -578,   316,  1140,   996,   996,   996,   996,    27,  -578,
+      37,  -578,  -578,  1140,   322,  1840,  1840,  1840,  1840,  1840,
+     319,  -578,   324,   326,   327,  1840,  1140,   996,   329,  -578,
+    -578,  -578,  -578,  -578,  -578,  -578,  -578,   313,   313,  1840,
+    1722,  1722,  1722,  1722,  -578,   330,   331,   333,   335,  -578,
+     336,  1722,  -578,   332,  1274,   -40,  -578,  -578,   337,   341,
+     463,    21,  -578,  -578,    87,   345,   349,  -578,   480,    22,
+    -578,   488,   490,   352,   350,   351,   353,   354,  1140,   513,
+    1140,   359,   361,  1140,   364,    87,  -578,   366,   373,   515,
+     359,  1840,  1140,  1140,    87,   368,   375,  1840,  -578,  -578,
+      -1,   376,   377,   380,   381,   147,  1722,  1722,  1722,  1722,
+     176,  1722,  -578,  -578,   392,  1722,  1722,  1840,   519,   538,
+    -578,   313,   274,  1660,  -578,   398,  -578,  1140,  1140,  1905,
+    1140,  1140,  1140,  1140,   375,  -578,   375,  1840,  1140,   400,
+    1840,  1840,  1840,  -578,   996,  -578,  -578,  1905,   506,  -578,
+     996,  -578,  1722,  1722,  1722,  1722,  -578,   402,   405,   406,
+     407,  -578,  -578,  -578,   410,   413,    49,  -578,  -578,  -578,
+    -578,  -578,  -578,    87,   -16,   547,   414,   419,    90,    87,
+     206,  -578,  -578,  -578,  -578,  -578,  -578,  -578,   411,  1140,
+    -578,  -578,  -578,  -578,   269,   375,   415,   417,   425,   427,
+    1722,  -578,  1722,  1722,   276,  -578,  -578,  -578,   274,  -578,
+     517,  -578,   568,     1,   849,   849,  -578,  1946,  -578,   422,
+     359,  -578,  -578,  -578,  -578,  -578,  -578,   430,   431,   432,
+    -578,  -578,   586,   444,  1140,  -578,   621,     3,   442,   447,
+    -578,  -578,    18,    90,    87,  -578,   188,  -578,  -578,  -578,
+    -578,   577,  -578,  -578,   441,  -578,   621,   178,   178,   587,
+     849,   849,  -578,   588,   448,  1140,  -578,  -578,  1140,   589,
+     539,   178,   178,  -578,  1140,   594,  -578,  1140,  -578
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -560,   441,   442,   444,  -174,  -167,  -173,  -560,     0,   -13,
-    -141,   483,    13,  -560,  -560,  -560,  -560,    30,  -560,  -560,
-    -560,  -139,  -560,  -416,  -560,  -238,  -560,  -560,  -311,    22,
-    -560,  -406,  -560,  -560,   -26,   350,  -120,  -560,   471,   485,
-     -64,  -157,  -251,   100,   194,   363,  -560,  -560,   571,  -560,
-    -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,
-     499,  -560,  -560,  -560,  -560,  -560,  -560,  -559,  -115,   162,
-    -191,  -560,  -560,   535,  -560,  -560,  -560,  -560,  -560,    63,
-     160,  -560,  -560,  -560,  -560
+    -578,   482,   484,   485,  -163,  -161,  -174,  -578,     0,    12,
+     -97,   525,    10,  -578,  -578,  -578,  -578,   267,  -578,  -578,
+    -578,  -138,  -578,  -457,  -578,  -239,  -578,  -578,  -311,    45,
+    -578,  -412,  -578,  -578,   -26,   387,  -122,  -578,   510,   521,
+      86,  -159,  -237,   222,   257,   383,  -578,  -578,   612,  -578,
+    -578,  -578,  -578,  -578,  -578,  -578,  -578,  -578,  -578,  -578,
+     541,  -578,  -578,  -578,  -578,  -578,  -578,  -577,   -51,   246,
+    -197,  -578,  -578,   575,  -578,  -578,  -578,  -578,  -578,    88,
+    -413,  -578,  -578,  -578,  -578
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -212
+#define YYTABLE_NINF -214
 static const yytype_int16 yytable[] =
 {
-      11,    82,   351,   283,   282,   403,   105,   271,   167,   282,
-     317,    91,   168,    13,   368,   370,   502,    11,   111,    94,
-     111,   484,   485,   313,   273,   321,   322,   323,   324,   325,
-      13,   314,   466,   329,   111,   111,   506,    24,   284,   244,
-     111,    29,    30,    31,    32,    33,    34,    35,    36,   272,
-      37,   468,   109,   502,   631,   144,   144,   165,   111,   111,
-    -145,   439,    21,   280,   145,   237,   119,   120,   444,   281,
-     111,    84,    85,   503,   641,   467,   136,    22,    89,   111,
-     109,   355,    25,   357,    90,   241,   136,   330,   439,   356,
-      26,   358,   153,    11,   467,   439,   439,   445,    27,   550,
-     352,   353,   153,   510,   498,   -55,   -55,   -55,   -55,   247,
-     248,   249,   250,    28,   234,   235,   443,   112,   238,   112,
-     636,   420,   421,   422,   242,   405,   423,   348,   245,   246,
-     424,   425,    44,   112,   112,   457,   400,   -67,   587,   112,
-     534,   418,   347,   593,   594,    38,    39,    40,   277,   169,
-      38,    39,    40,   331,   332,   612,    95,   112,   112,  -145,
-     632,   -67,   389,  -145,   395,   389,   389,   106,   389,   112,
-     586,   532,    58,   315,   316,   277,   318,    46,   112,    47,
-     274,   402,   -67,   122,   123,   124,   125,   126,   127,   319,
-     277,   277,   277,   277,   277,   326,   327,   328,   277,    59,
-     458,   634,   635,   389,   637,   638,   136,   566,    60,   567,
-     416,   389,   389,   389,   149,   150,   472,   153,   474,   475,
-     476,   420,   421,   422,   133,    62,   423,   648,   649,   134,
-     424,   425,    91,     2,    64,    65,     4,   107,    67,    68,
-      69,    70,    71,    72,    73,    98,     1,     2,   439,     3,
-       4,     5,     1,   440,   333,     3,    99,     5,   153,    64,
-      65,    50,    51,    52,   600,    86,    53,    87,   100,   396,
-     555,     1,     2,   102,     3,     4,     5,    74,   114,   115,
-     389,   389,   389,   389,   389,   271,   397,   398,   399,   116,
-     389,   117,   539,   103,   521,   434,   435,   436,   437,   438,
-     104,   389,   389,    87,   153,   417,   277,   140,   446,   447,
-     448,   595,   141,   596,   420,   421,   422,   148,   599,   423,
-     596,   334,   335,   424,   425,   146,   166,   272,   230,   232,
-     568,   233,   236,   571,   572,   573,   239,   240,   243,   336,
-     337,   442,   338,   339,   -56,   340,   341,   342,   -57,   -60,
-     452,   389,   -59,   389,   -58,   251,   389,   619,   111,   275,
-     282,   623,   349,   389,   389,   277,   487,   488,   489,   490,
-     350,   359,   360,   371,   361,   496,   362,   419,   363,   372,
-     373,   277,   473,   277,   277,   277,    75,    76,   391,   480,
-      77,   374,    78,   108,   376,   406,   389,   389,   407,   389,
-     389,   389,   389,   486,   415,     1,   408,   389,     3,   429,
-       5,   409,   410,   411,   430,   431,   432,   433,   389,   613,
-     455,   449,   459,   497,   460,   477,   478,   479,   540,   541,
-     542,   543,   471,   483,   492,   545,   546,   493,   494,   495,
-     333,   633,   392,   393,   499,   394,   501,   500,   507,   508,
-     509,   511,   512,   513,   514,   389,   519,   533,   515,   527,
-     548,   516,   517,   530,   521,   522,   296,   297,   524,   525,
-     526,   576,   577,   578,   579,   547,   531,   535,   389,   389,
-     404,   554,   536,   537,   538,   544,   549,   560,   412,   413,
-     414,   556,   590,   570,   580,   277,   389,   467,   277,   277,
-     277,   582,   581,   597,   560,   583,   551,   334,   335,   584,
-     585,   609,   592,   591,   611,   601,   605,   602,   606,   607,
-     603,   627,   389,   389,   604,   336,   337,   389,   338,   339,
-     389,   340,   341,   342,   622,   624,   389,   625,   626,   389,
-     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
-     308,   309,   310,   311,   628,   -18,   -19,   461,   462,   463,
-     464,   465,   639,   640,   642,   645,   646,   470,   651,   652,
-     621,   654,   222,   223,   608,   224,   131,   588,   481,   482,
-     377,   378,   345,   147,    64,    65,   379,   551,    45,   130,
-    -211,   143,    97,   574,   491,     0,     1,     2,     0,     3,
-       4,     5,   380,   381,   382,     0,   354,     0,   -69,     1,
-       2,     0,     3,     4,     5,     0,     0,   383,   384,     0,
-       6,     7,     0,     0,     0,     0,     0,     0,   518,     0,
-     520,   333,     0,   523,     0,     0,   385,     0,     0,     0,
-     528,   529,     8,     0,     0,     0,     9,     0,     0,     0,
-      10,     0,   180,   181,   182,   183,   184,   185,   186,   187,
-     188,   189,   190,   191,   192,   193,   194,   255,   256,   257,
-     258,     0,     0,   557,   558,     0,   562,   563,   564,   565,
-       0,     0,     0,     0,   569,   285,   286,   287,   288,   289,
-     290,   291,   292,   293,   294,   575,   259,   203,   615,   616,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,     0,
-     260,     0,   261,   262,   263,     0,   336,   337,     0,   338,
-     339,     0,   340,   341,   342,     0,     0,     0,     0,     0,
-       0,     0,   598,     0,     0,     0,     0,     0,     0,     0,
-     386,     0,     0,     0,     0,   377,   378,     0,     0,    64,
-      65,   379,     0,     0,     0,   617,   618,     0,     0,     0,
-       0,     1,     2,     0,     3,     4,     5,   380,   381,   382,
-       0,     0,     0,   630,     0,     0,     0,     0,     0,     0,
-       0,     0,   383,   384,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   111,     0,   643,
-     644,   385,     0,     0,   647,     0,     0,   650,     0,     0,
-       0,     0,     0,   653,     0,     0,   655,   180,   181,   182,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,   255,   256,   257,   258,     0,    64,    65,     0,
-     107,    67,    68,    69,    70,    71,    72,    73,     0,     1,
-       2,     0,     3,     4,     5,     0,     0,     0,     0,     0,
-       0,   259,   203,   204,   205,   206,   207,   208,   209,   210,
-     211,   212,   213,   214,     0,   260,     0,   261,   262,   263,
-      74,     0,     0,     0,     0,     0,     0,   377,   378,     0,
-       0,    64,    65,   379,     0,     0,   112,  -210,     0,     0,
-       0,     0,     0,     1,     2,   386,     3,     4,     5,   380,
-     381,   382,     0,     0,     0,   -69,     1,     2,     0,     3,
-       4,     5,     0,     0,   383,   384,     0,     6,     7,     0,
+      11,    82,   287,   357,   321,   275,   167,   522,   490,   411,
+      13,   168,   286,    24,   286,   105,    91,    11,   518,   325,
+     326,   327,   328,   329,    94,   498,   499,    13,   111,   335,
+     111,   505,   376,   378,   317,   111,   510,   318,   478,   288,
+      29,    30,    31,    32,    33,    34,    35,    36,   480,    37,
+       2,    25,   109,     4,   111,   518,   659,    64,    65,   654,
+     107,    67,    68,    69,    70,    71,    72,    73,   277,     1,
+       2,   111,     3,     4,     5,   519,   136,    27,   144,   664,
+     109,   479,   -55,   -55,   -55,   -55,   136,   145,    26,   135,
+     336,   479,   153,    11,   361,    21,   363,   362,   144,   364,
+      74,   451,   153,   246,   111,   247,   248,   239,   456,   569,
+      22,   451,   133,   276,   236,   237,   608,   134,   240,   451,
+     457,   614,   615,   111,   244,   430,   431,   432,   514,   112,
+     433,   112,   119,   120,   434,   435,   112,   413,   455,   354,
+     111,   428,   111,    28,   353,  -145,   358,   359,   281,   604,
+     169,    38,    39,    40,    44,   112,   551,   469,    60,   430,
+     431,   432,    58,    95,   433,   635,   403,   655,   434,   435,
+     337,   338,   112,   319,   320,   281,   322,   278,   106,    62,
+     620,   451,    59,   657,   658,   549,   660,   661,   526,   323,
+     281,   281,   281,   281,   281,   330,   331,   332,   333,   334,
+     281,    46,   470,    47,    91,   112,   607,   165,   136,   671,
+     672,    75,    76,    98,   426,    77,    99,    78,   484,   153,
+     486,   487,   488,   585,   112,   586,   100,   408,   -67,   102,
+     397,   284,   339,   397,   397,   243,   397,   285,    86,   103,
+      87,   112,   104,   112,   410,   -67,  -145,   -67,   451,    87,
+    -145,    64,    65,   452,   107,    67,    68,    69,    70,    71,
+      72,    73,   153,     1,     2,   140,     3,     4,     5,     1,
+     141,   397,     3,   404,     5,   249,   250,   251,   252,   397,
+     397,   397,   397,   397,   622,   574,    38,    39,    40,   148,
+     405,   406,   407,     1,    74,   275,     3,   146,     5,   340,
+     341,    64,    65,   116,   556,   117,   537,   166,    84,    85,
+     153,   427,   281,     1,     2,    89,     3,     4,     5,   342,
+     343,    90,   344,   345,   232,   346,   347,   348,   339,   430,
+     431,   432,   234,   561,   433,   537,   149,   150,   434,   435,
+     587,   114,   115,   590,   591,   592,   235,   238,  -213,   454,
+     241,   245,   397,   397,   397,   397,   397,   242,   464,    50,
+      51,    52,   397,   616,    53,   617,   -69,     1,     2,   -56,
+       3,     4,     5,   281,   -57,   397,   397,   642,     6,     7,
+     -60,   -59,   646,   122,   123,   124,   125,   126,   127,   281,
+     485,   281,   281,   281,   -58,   340,   341,   253,   111,   494,
+       8,   279,   286,   276,     9,    75,    76,   355,    10,    77,
+     356,    78,   108,   500,   365,   342,   343,   379,   344,   345,
+     366,   346,   347,   348,   367,   399,   621,   397,   617,   397,
+     414,   368,   397,   630,   369,   537,   370,   371,   380,   636,
+     381,   397,   397,   382,   384,   415,   425,   439,   416,   417,
+     418,   444,   445,   446,   447,   448,   449,   450,   419,   429,
+     440,   441,   442,   656,   443,   544,   458,   459,   460,   300,
+     301,   550,   461,   467,   471,   472,   397,   397,   489,   397,
+     397,   397,   397,   491,   483,   492,   493,   397,   497,   506,
+     507,   566,   508,   397,   509,   511,   515,   573,   513,   397,
+     516,   517,   525,   579,   523,   527,   524,   528,   529,   530,
+     531,   281,   532,   533,   281,   281,   281,   535,   537,   543,
+     538,   579,   570,   540,   547,   541,   501,   502,   503,   504,
+     400,   401,   542,   402,   548,   552,   553,   512,   397,   554,
+     555,   567,   568,   302,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,   312,   313,   314,   315,   575,   563,   589,
+     479,   600,   601,   397,   397,   602,   603,   605,   412,   611,
+     606,   632,   623,   612,   624,   618,   420,   421,   422,   423,
+     424,   613,   625,   397,   626,   634,   645,   647,   648,   649,
+     650,   644,   557,   558,   559,   560,   651,   562,   -18,   662,
+     663,   564,   565,   -19,   665,   668,   674,   669,   570,   397,
+     397,   677,   675,   224,   397,   225,   226,   397,   131,   609,
+     631,   351,   147,   397,   385,   386,   397,   143,   360,    45,
+     387,   130,    97,     0,     0,   594,     0,     0,   596,   597,
+     598,   599,     0,     0,     0,     0,   388,   389,   390,   473,
+     474,   475,   476,   477,     0,     0,     0,     0,     0,   482,
+       0,   391,   392,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   495,   496,     0,     0,     0,     0,     0,     0,
+     393,     0,     0,     0,     0,     0,   627,     0,   628,   629,
+       0,     0,     0,     0,     0,     0,   180,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   257,   258,   259,   260,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   534,     0,   536,     0,     0,   539,
+       0,     0,     0,     0,     0,     0,     0,     0,   545,   546,
+     261,   203,   204,   205,   206,   207,   208,   209,   210,   211,
+     212,   213,   214,     0,   262,     0,   263,   264,   265,     0,
+     266,   267,   289,   290,   291,   292,   293,   294,   295,   296,
+     297,   298,     0,   576,   577,     0,   581,   582,   583,   584,
+       0,     0,     0,     0,   588,     0,   394,     0,     0,     0,
+     593,     0,     0,     0,    64,    65,   595,   107,    67,    68,
+      69,    70,    71,    72,    73,     0,     1,     2,     0,     3,
+       4,     5,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   385,     0,     0,     0,     0,     0,     8,
-       0,     0,     0,     9,     0,     0,     0,    10,     0,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   194,   255,   256,   257,   258,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    75,
-      76,     0,     0,    77,     0,    78,   142,     0,     0,     0,
-       0,     0,     0,   259,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,     0,   260,     0,   261,
-     262,   263,    64,    65,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     1,     2,     0,     3,     4,     5,
-     252,     0,     0,     0,     0,     0,     0,   386,     0,     0,
-       0,     0,     0,     0,     0,   253,   254,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    64,    65,
-     111,   107,   156,   157,   158,   159,   160,   161,    73,     0,
-       1,     2,     0,     3,     4,     5,     0,     0,     0,     0,
-     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   255,   256,   257,   258,     0,
-       0,    74,    64,    65,     0,   107,   156,   157,   158,   159,
-     160,   161,    73,     0,     1,     2,     0,     3,     4,     5,
-       0,     0,     0,     0,   259,   203,   204,   205,   206,   207,
-     208,   209,   210,   211,   212,   213,   214,     0,   260,     0,
-     261,   262,   263,     0,     0,    74,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   112,
-       0,    64,    65,   -67,     0,   264,     0,     0,   265,     0,
-     266,     0,   267,     1,     2,     0,     3,     4,     5,   252,
+       0,     0,     0,     0,     0,   619,     0,    74,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   253,   254,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   111,
-      75,    76,     0,     0,    77,     0,    78,   369,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   194,   255,   256,   257,   258,     0,     0,
-       0,     0,     0,     0,    75,    76,     0,     0,    77,     0,
-      78,   441,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   259,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,     0,   260,     0,   261,
-     262,   263,     0,     0,     0,     0,     0,     0,     0,     0,
-     377,   378,     0,     0,     0,     0,   379,     0,   112,     0,
-       0,     0,     0,     0,   264,     0,     0,   265,     0,   266,
-       0,   267,   380,   381,   382,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   383,   384,     0,
+       0,     0,   385,   386,     0,     0,    64,    65,   387,     0,
+     640,   641,     0,     0,     0,     0,     0,     0,     1,     2,
+       0,     3,     4,     5,   388,   389,   390,     0,     0,     0,
+     653,     0,     0,     0,     0,     0,     0,     0,     0,   391,
+     392,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   339,     0,     0,   666,   667,   393,     0,
+       0,   670,     0,     0,   673,     0,     0,     0,     0,     0,
+     676,     0,     0,   678,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   257,
+     258,   259,   260,     0,     0,     0,     0,     0,    75,    76,
+       0,     0,    77,     0,    78,   142,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   261,   203,
+     638,   639,   206,   207,   208,   209,   210,   211,   212,   213,
+     214,     0,   262,     0,   263,   264,   265,     0,   266,   267,
+     342,   343,     0,   344,   345,     0,   346,   347,   348,   385,
+     386,     0,     0,    64,    65,   387,     0,     0,     0,     0,
+       0,     0,     0,     0,   394,     1,     2,     0,     3,     4,
+       5,   388,   389,   390,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   391,   392,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   385,     0,     0,     0,
+       0,   111,     0,    64,    65,   393,   107,   156,   157,   158,
+     159,   160,   161,    73,     0,     1,     2,     0,     3,     4,
+       5,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   193,   194,   257,   258,   259,   260,
+       0,     0,     0,     0,    64,    65,    74,   107,   156,   157,
+     158,   159,   160,   161,    73,     0,     1,     2,     0,     3,
+       4,     5,     0,     0,     0,   261,   203,   204,   205,   206,
+     207,   208,   209,   210,   211,   212,   213,   214,     0,   262,
+       0,   263,   264,   265,     0,   266,   267,    74,     0,     0,
+       0,     0,     0,   385,   386,     0,     0,    64,    65,   387,
+       0,     0,   112,     0,     0,     0,     0,     0,     0,     1,
+       2,   394,     3,     4,     5,   388,   389,   390,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   180,   181,   182,   183,   184,   185,   186,   187,
-     188,   189,   190,   191,   192,   193,   194,   255,   256,   257,
-     258,     0,     0,     0,     0,     0,     0,    64,    65,     0,
-     107,    67,    68,    69,    70,    71,    72,    73,     0,     1,
-       2,     0,     3,     4,     5,     0,   259,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   135,
-     260,     0,   261,   262,   263,     0,     0,     0,    64,    65,
-      74,   151,    67,    68,    69,    70,    71,    72,    73,     0,
-       1,     2,     0,     3,     4,     5,     0,     0,    64,    65,
-     386,   107,    67,    68,    69,    70,    71,    72,    73,     0,
-       1,     2,     0,     3,     4,     5,     0,     0,     0,    64,
-      65,    74,   107,   156,   157,   158,   159,   160,   161,    73,
-     344,     1,     2,     0,     3,     4,     5,     0,     0,    64,
-      65,    74,   107,    67,    68,    69,    70,    71,    72,    73,
+     391,   392,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   393,
+       0,     0,     0,     0,     0,     0,     0,    75,    76,     0,
+       0,    77,     0,    78,   377,   180,   181,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     257,   258,   259,   260,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    75,    76,
+       0,     0,    77,     0,    78,   453,     0,     0,     0,   261,
+     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
+     213,   214,     0,   262,     0,   263,   264,   265,     0,   266,
+     267,    64,    65,     0,     0,     0,     0,     0,  -212,     0,
+       0,     0,     0,     1,     2,     0,     3,     4,     5,   254,
+       0,     0,     0,     0,     0,   394,   -69,     1,     2,     0,
+       3,     4,     5,     0,   255,   256,     0,     0,     6,     7,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   111,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       8,     0,     0,     0,     9,     0,     0,     0,    10,   180,
+     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,   194,   257,   258,   259,   260,     0,    64,
+      65,     0,   151,    67,    68,    69,    70,    71,    72,    73,
        0,     1,     2,     0,     3,     4,     5,     0,     0,     0,
-      64,    65,    74,   107,    67,    68,    69,    70,    71,    72,
-      73,   451,     1,     2,     0,     3,     4,     5,     0,     0,
-       0,     0,    74,     0,     0,     0,     0,     0,     0,    75,
-      76,     0,   553,    77,     0,    78,   152,     0,     0,     0,
-       0,    64,    65,    74,    66,    67,    68,    69,    70,    71,
-      72,    73,     0,     1,     2,     0,     3,     4,     5,     0,
+       0,     0,     0,   261,   203,   204,   205,   206,   207,   208,
+     209,   210,   211,   212,   213,   214,     0,   262,     0,   263,
+     264,   265,    74,   266,   267,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      75,    76,     0,     0,    77,     0,    78,     0,     0,     0,
-       0,     0,     0,     0,    74,     0,     0,     0,     0,     0,
-      75,    76,     0,     0,    77,     0,    78,     0,     0,     0,
+     112,     0,    64,    65,   -67,     0,   268,     0,     0,   269,
+       0,   270,     0,   271,     1,     2,     0,     3,     4,     5,
+     254,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   255,   256,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    75,    76,     0,   364,    77,     0,    78,     0,     0,
+     111,     0,     0,     0,     0,     0,     0,   152,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    75,    76,     0,     0,    77,     0,    78,     0,     0,
+     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   257,   258,   259,   260,     0,
+       0,     0,     0,    75,    76,     0,     0,    77,     0,    78,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    75,    76,     0,     0,    77,     0,    78,    64,
+       0,     0,     0,     0,   261,   203,   204,   205,   206,   207,
+     208,   209,   210,   211,   212,   213,   214,     0,   262,     0,
+     263,   264,   265,     0,   266,   267,     0,    64,    65,     0,
+     107,    67,    68,    69,    70,    71,    72,    73,     0,     1,
+       2,   112,     3,     4,     5,     0,     0,   268,     0,     0,
+     269,     0,   270,     0,   271,     0,     0,     0,     0,   350,
+       0,     0,     0,     0,     0,     0,     0,     0,    64,    65,
+      74,   107,   156,   157,   158,   159,   160,   161,    73,     0,
+       1,     2,     0,     3,     4,     5,    64,    65,     0,   107,
+      67,    68,    69,    70,    71,    72,    73,     0,     1,     2,
+       0,     3,     4,     5,     0,     0,     0,     0,     0,     0,
+       0,    74,     0,     0,     0,     0,     0,     0,   463,     0,
+       0,     0,     0,     0,     0,     0,     0,    64,    65,    74,
+     107,    67,    68,    69,    70,    71,    72,    73,     0,     1,
+       2,     0,     3,     4,     5,    64,    65,     0,    66,    67,
+      68,    69,    70,    71,    72,    73,     0,     1,     2,   572,
+       3,     4,     5,     0,     0,     0,     0,     0,     0,     0,
+      74,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    75,    76,     0,     0,    77,     0,    78,    74,    64,
       65,     0,   107,   156,   157,   158,   159,   160,   161,    73,
        0,     1,     2,     0,     3,     4,     5,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    75,    76,     0,     0,    77,     0,    78,
-      64,    65,    74,   151,    67,    68,    69,    70,    71,    72,
-      73,     0,     1,     2,     0,     3,     4,     5,    64,    65,
-       0,   107,    67,    68,    69,    70,    71,    72,    73,     0,
-       1,     2,     0,     3,     4,     5,     0,     0,     0,     0,
-       0,    64,    65,    74,   276,    67,    68,    69,    70,    71,
-      72,    73,     0,     1,     2,     0,     3,     4,     5,    64,
-      65,    74,   107,   156,   157,   158,   159,   160,   161,    73,
-       0,     1,     2,     0,     3,     4,     5,     0,     0,     0,
-       0,     0,    64,    65,    74,   107,    67,    68,    69,    70,
-      71,    72,   559,     0,     1,     2,     0,     3,     4,     5,
+       0,     0,    75,    76,     0,   372,    77,     0,    78,     0,
        0,     0,    74,     0,     0,     0,     0,     0,     0,     0,
+      75,    76,     0,     0,    77,     0,    78,    64,    65,     0,
+     151,    67,    68,    69,    70,    71,    72,    73,     0,     1,
+       2,     0,     3,     4,     5,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    75,    76,     0,     0,    77,     0,    78,     0,     0,
+      74,     0,     0,     0,     0,     0,     0,     0,     0,    75,
+      76,     0,     0,    77,     0,    78,     0,    64,    65,     0,
+     107,    67,    68,    69,    70,    71,    72,    73,     0,     1,
+       2,     0,     3,     4,     5,    64,    65,     0,   280,    67,
+      68,    69,    70,    71,    72,    73,     0,     1,     2,     0,
+       3,     4,     5,    75,    76,     0,     0,    77,     0,    78,
+      74,     0,     0,     0,    64,    65,     0,   107,   156,   157,
+     158,   159,   160,   161,    73,     0,     1,     2,    74,     3,
+       4,     5,    64,    65,     0,   107,    67,    68,    69,    70,
+      71,    72,   578,     0,     1,     2,     0,     3,     4,     5,
+       0,     0,     0,     0,     0,     0,     0,    74,     0,     0,
        0,    75,    76,     0,     0,    77,     0,    78,     0,     0,
        0,     0,     0,    64,    65,    74,   107,    67,    68,    69,
-      70,    71,    72,   620,     0,     1,     2,     0,     3,     4,
+      70,    71,    72,   643,     0,     1,     2,     0,     3,     4,
        5,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    75,    76,     0,     0,    77,     0,    78,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,    74,     0,     0,     0,
-      75,    76,     0,     0,    77,     0,    78,     0,     0,     0,
+       0,    75,    76,     0,     0,    77,     0,    78,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    75,
+      76,     0,     0,    77,     0,    78,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    75,    76,     0,     0,    77,     0,    78,
-       0,     0,     0,     0,     0,     0,     0,     0,   171,     0,
-       0,    75,    76,     0,     0,    77,     0,   367,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   172,
-     173,     0,     0,     0,    75,    76,     0,     0,    77,     0,
-      78,   174,   175,   176,   177,   178,   179,   180,   181,   182,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   198,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    75,    76,     0,     0,    77,
-       0,    78,     0,     0,     0,     0,   199,   200,   201,     0,
-       0,   202,   203,   204,   205,   206,   207,   208,   209,   210,
-     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
-     221
+     171,     0,     0,     0,     0,     0,     0,     0,    75,    76,
+       0,     0,    77,     0,   375,     0,     0,     0,     0,     0,
+       0,   172,   173,     0,     0,     0,    75,    76,     0,     0,
+      77,     0,    78,   174,   175,   176,   177,   178,   179,   180,
+     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,   194,   195,   196,   197,   198,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    75,    76,     0,
+       0,    77,     0,    78,     0,     0,     0,     0,   199,   200,
+     201,     0,     0,   202,   203,   204,   205,   206,   207,   208,
+     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
+     219,   220,   221,   222,   223
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    27,   240,   176,    11,   316,     4,   164,   128,    11,
-     201,    21,    28,     0,   265,   266,    34,    17,    55,    29,
-      55,   427,   428,   197,   165,   216,   217,   218,   219,   220,
-      17,   198,    11,   224,    55,    55,   452,   156,   177,   154,
-      55,    42,    43,    44,    45,    46,    47,    48,    49,   164,
-      51,    11,    78,    34,   613,   157,   157,   121,    55,    55,
-      55,   157,    53,    11,   166,   166,    32,    33,   164,    17,
-      55,    41,    42,    54,   633,    54,   102,    68,    48,    55,
-     106,   255,    59,   257,    54,   149,   112,   226,   157,   256,
-     156,   258,   118,    93,    54,   157,   157,   166,    18,   505,
-     241,   242,   128,   164,   166,     3,     4,     5,     6,     3,
-       4,     5,     6,   156,   140,   141,   367,   154,   144,   154,
-      38,   139,   140,   141,   150,   160,   144,   164,    26,    27,
-     148,   149,     0,   154,   154,   386,   157,   158,   554,   154,
-     155,   332,   162,   559,   560,   151,   152,   153,   174,   165,
-     151,   152,   153,   117,   118,   162,   166,   154,   154,   154,
-     162,   158,   277,   158,   284,   280,   281,   165,   283,   154,
-     155,   482,   156,   199,   200,   201,   202,    46,   154,    48,
-     167,   157,   158,    62,    63,    64,    65,    66,    67,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   156,
-     391,   617,   618,   318,   620,   621,   232,   518,   160,   520,
-     330,   326,   327,   328,   114,   115,   407,   243,   409,   410,
-     411,   139,   140,   141,   157,    22,   144,   643,   644,   162,
-     148,   149,    21,    20,     7,     8,    23,    10,    11,    12,
-      13,    14,    15,    16,    17,    22,    19,    20,   157,    22,
-      23,    24,    19,   162,    54,    22,    22,    24,   284,     7,
-       8,    42,    43,    44,   575,    35,    47,    37,    22,   295,
-     508,    19,    20,   154,    22,    23,    24,    50,    84,    85,
-     395,   396,   397,   398,   399,   442,   312,   313,   314,    42,
-     405,    44,   155,     4,   157,   359,   360,   361,   362,   363,
-       4,   416,   417,    37,   330,   331,   332,   161,   372,   373,
-     374,   155,   161,   157,   139,   140,   141,   158,   155,   144,
-     157,   121,   122,   148,   149,   154,     4,   442,    22,   157,
-     521,   155,   164,   524,   525,   526,     4,   155,   154,   139,
-     140,   367,   142,   143,     9,   145,   146,   147,     9,     9,
-     376,   466,     9,   468,     9,     9,   471,   595,    55,    57,
-      11,   599,   164,   478,   479,   391,   430,   431,   432,   433,
-     155,   154,   154,    22,   154,   439,   154,     4,   154,   154,
-     154,   407,   408,   409,   410,   411,   159,   160,   157,   415,
-     163,   154,   165,   166,   154,   157,   511,   512,   157,   514,
-     515,   516,   517,   429,    38,    19,   157,   522,    22,    38,
-      24,   157,   157,   157,   154,   154,   154,   154,   533,   592,
-      61,   157,   157,   164,   157,   157,   157,   157,   492,   493,
-     494,   495,   160,   157,   157,   499,   500,   157,   157,   157,
-      54,   614,   280,   281,   157,   283,    38,   157,   157,   155,
-      22,    17,    17,   154,   157,   570,     4,   483,   157,     4,
-      22,   157,   157,   154,   157,   157,    26,    27,   157,   157,
-     157,   535,   536,   537,   538,   501,   157,   157,   593,   594,
-     318,   507,   157,   157,   157,   164,     4,   513,   326,   327,
-     328,   157,    22,   157,   157,   521,   611,    54,   524,   525,
-     526,   157,   155,   162,   530,   157,   506,   121,   122,   155,
-     155,    54,   160,   157,    17,   155,   580,   155,   582,   583,
-     155,     4,   637,   638,   155,   139,   140,   642,   142,   143,
-     645,   145,   146,   147,   162,   155,   651,   155,   155,   654,
-     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
-     110,   111,   112,   113,   150,   154,   154,   395,   396,   397,
-     398,   399,    22,   157,    17,    17,   157,   405,    17,    73,
-     596,    17,   131,   131,   587,   131,    93,   555,   416,   417,
-       3,     4,   232,   112,     7,     8,     9,   587,    17,    90,
-       0,   106,    57,   530,   434,    -1,    19,    20,    -1,    22,
-      23,    24,    25,    26,    27,    -1,   243,    -1,    18,    19,
-      20,    -1,    22,    23,    24,    -1,    -1,    40,    41,    -1,
-      30,    31,    -1,    -1,    -1,    -1,    -1,    -1,   466,    -1,
-     468,    54,    -1,   471,    -1,    -1,    59,    -1,    -1,    -1,
-     478,   479,    52,    -1,    -1,    -1,    56,    -1,    -1,    -1,
-      60,    -1,    75,    76,    77,    78,    79,    80,    81,    82,
-      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    -1,    -1,   511,   512,    -1,   514,   515,   516,   517,
-      -1,    -1,    -1,    -1,   522,    94,    95,    96,    97,    98,
-      99,   100,   101,   102,   103,   533,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,   130,   131,    -1,
-     133,    -1,   135,   136,   137,    -1,   139,   140,    -1,   142,
-     143,    -1,   145,   146,   147,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   570,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     163,    -1,    -1,    -1,    -1,     3,     4,    -1,    -1,     7,
-       8,     9,    -1,    -1,    -1,   593,   594,    -1,    -1,    -1,
-      -1,    19,    20,    -1,    22,    23,    24,    25,    26,    27,
-      -1,    -1,    -1,   611,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    40,    41,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,   637,
-     638,    59,    -1,    -1,   642,    -1,    -1,   645,    -1,    -1,
-      -1,    -1,    -1,   651,    -1,    -1,   654,    75,    76,    77,
-      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
-      88,    89,    90,    91,    92,    93,    -1,     7,     8,    -1,
-      10,    11,    12,    13,    14,    15,    16,    17,    -1,    19,
-      20,    -1,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,
-      -1,   119,   120,   121,   122,   123,   124,   125,   126,   127,
-     128,   129,   130,   131,    -1,   133,    -1,   135,   136,   137,
-      50,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,    -1,
-      -1,     7,     8,     9,    -1,    -1,   154,     0,    -1,    -1,
-      -1,    -1,    -1,    19,    20,   163,    22,    23,    24,    25,
-      26,    27,    -1,    -1,    -1,    18,    19,    20,    -1,    22,
-      23,    24,    -1,    -1,    40,    41,    -1,    30,    31,    -1,
+       0,    27,   176,   242,   201,   164,   128,   464,   421,   320,
+       0,    28,    11,   158,    11,     4,    21,    17,    34,   216,
+     217,   218,   219,   220,    29,   437,   438,    17,    55,   226,
+      55,   444,   269,   270,   197,    55,   449,   198,    11,   177,
+      42,    43,    44,    45,    46,    47,    48,    49,    11,    51,
+      20,    59,    78,    23,    55,    34,    38,     7,     8,   636,
+      10,    11,    12,    13,    14,    15,    16,    17,   165,    19,
+      20,    55,    22,    23,    24,    54,   102,    18,   159,   656,
+     106,    54,     3,     4,     5,     6,   112,   168,   158,    39,
+     228,    54,   118,    93,   257,    53,   259,   258,   159,   260,
+      50,   159,   128,   154,    55,    26,    27,   168,   166,   521,
+      68,   159,   159,   164,   140,   141,   573,   164,   144,   159,
+     168,   578,   579,    55,   150,   141,   142,   143,   168,   156,
+     146,   156,    32,    33,   150,   151,   156,   162,   375,   166,
+      55,   338,    55,   158,   164,    55,   243,   244,   174,   562,
+     167,   153,   154,   155,     0,   156,   157,   394,   162,   141,
+     142,   143,   158,   168,   146,   164,   288,   164,   150,   151,
+     117,   118,   156,   199,   200,   201,   202,   167,   167,    22,
+     593,   159,   158,   640,   641,   496,   643,   644,   166,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,    46,   399,    48,    21,   156,   157,   121,   234,   666,
+     667,   161,   162,    22,   336,   165,    22,   167,   415,   245,
+     417,   418,   419,   534,   156,   536,    22,   159,   160,   156,
+     281,    11,    54,   284,   285,   149,   287,    17,    35,     4,
+      37,   156,     4,   156,   159,   160,   156,   160,   159,    37,
+     160,     7,     8,   164,    10,    11,    12,    13,    14,    15,
+      16,    17,   288,    19,    20,   163,    22,    23,    24,    19,
+     163,   322,    22,   299,    24,     3,     4,     5,     6,   330,
+     331,   332,   333,   334,   595,   524,   153,   154,   155,   160,
+     316,   317,   318,    19,    50,   454,    22,   156,    24,   121,
+     122,     7,     8,    42,   157,    44,   159,     4,    41,    42,
+     336,   337,   338,    19,    20,    48,    22,    23,    24,   141,
+     142,    54,   144,   145,    22,   147,   148,   149,    54,   141,
+     142,   143,   159,   157,   146,   159,   114,   115,   150,   151,
+     537,    84,    85,   540,   541,   542,   157,   166,     0,   375,
+       4,   156,   403,   404,   405,   406,   407,   157,   384,    42,
+      43,    44,   413,   157,    47,   159,    18,    19,    20,     9,
+      22,    23,    24,   399,     9,   426,   427,   616,    30,    31,
+       9,     9,   621,    62,    63,    64,    65,    66,    67,   415,
+     416,   417,   418,   419,     9,   121,   122,     9,    55,   425,
+      52,    57,    11,   454,    56,   161,   162,   166,    60,   165,
+     157,   167,   168,   439,   156,   141,   142,    22,   144,   145,
+     156,   147,   148,   149,   156,   159,   157,   478,   159,   480,
+     159,   156,   483,   157,   156,   159,   156,   156,   156,   613,
+     156,   492,   493,   156,   156,   159,    38,    38,   159,   159,
+     159,   365,   366,   367,   368,   369,   370,   371,   159,     4,
+     156,   156,   156,   637,   156,   491,   380,   381,   382,    26,
+      27,   497,   159,    61,   159,   159,   527,   528,   159,   530,
+     531,   532,   533,   159,   162,   159,   159,   538,   159,   159,
+     159,   517,   159,   544,   159,   159,   159,   523,   166,   550,
+     159,    38,    22,   529,   159,    17,   157,    17,   156,   159,
+     159,   537,   159,   159,   540,   541,   542,     4,   159,     4,
+     159,   547,   522,   159,   156,   159,   440,   441,   442,   443,
+     284,   285,   159,   287,   159,   159,   159,   451,   589,   159,
+     159,    22,     4,   100,   101,   102,   103,   104,   105,   106,
+     107,   108,   109,   110,   111,   112,   113,   159,   166,   159,
+      54,   159,   157,   614,   615,   159,   159,   157,   322,    22,
+     157,    54,   157,   159,   157,   164,   330,   331,   332,   333,
+     334,   162,   157,   634,   157,    17,   164,   157,   157,   157,
+       4,   617,   506,   507,   508,   509,   152,   511,   156,    22,
+     159,   515,   516,   156,    17,    17,    17,   159,   608,   660,
+     661,    17,    73,   131,   665,   131,   131,   668,    93,   574,
+     608,   234,   112,   674,     3,     4,   677,   106,   245,    17,
+       9,    90,    57,    -1,    -1,   547,    -1,    -1,   552,   553,
+     554,   555,    -1,    -1,    -1,    -1,    25,    26,    27,   403,
+     404,   405,   406,   407,    -1,    -1,    -1,    -1,    -1,   413,
+      -1,    40,    41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   426,   427,    -1,    -1,    -1,    -1,    -1,    -1,
+      59,    -1,    -1,    -1,    -1,    -1,   600,    -1,   602,   603,
+      -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
+      89,    90,    91,    92,    93,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   478,    -1,   480,    -1,    -1,   483,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   492,   493,
+     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,    -1,   133,    -1,   135,   136,   137,    -1,
+     139,   140,    94,    95,    96,    97,    98,    99,   100,   101,
+     102,   103,    -1,   527,   528,    -1,   530,   531,   532,   533,
+      -1,    -1,    -1,    -1,   538,    -1,   165,    -1,    -1,    -1,
+     544,    -1,    -1,    -1,     7,     8,   550,    10,    11,    12,
+      13,    14,    15,    16,    17,    -1,    19,    20,    -1,    22,
+      23,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   589,    -1,    50,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    52,
-      -1,    -1,    -1,    56,    -1,    -1,    -1,    60,    -1,    75,
+      -1,    -1,     3,     4,    -1,    -1,     7,     8,     9,    -1,
+     614,   615,    -1,    -1,    -1,    -1,    -1,    -1,    19,    20,
+      -1,    22,    23,    24,    25,    26,    27,    -1,    -1,    -1,
+     634,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    40,
+      41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    54,    -1,    -1,   660,   661,    59,    -1,
+      -1,   665,    -1,    -1,   668,    -1,    -1,    -1,    -1,    -1,
+     674,    -1,    -1,   677,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
+      91,    92,    93,    -1,    -1,    -1,    -1,    -1,   161,   162,
+      -1,    -1,   165,    -1,   167,   168,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,   120,
+     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
+     131,    -1,   133,    -1,   135,   136,   137,    -1,   139,   140,
+     141,   142,    -1,   144,   145,    -1,   147,   148,   149,     3,
+       4,    -1,    -1,     7,     8,     9,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   165,    19,    20,    -1,    22,    23,
+      24,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    40,    41,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    55,    -1,     7,     8,    59,    10,    11,    12,    13,
+      14,    15,    16,    17,    -1,    19,    20,    -1,    22,    23,
+      24,    75,    76,    77,    78,    79,    80,    81,    82,    83,
+      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
+      -1,    -1,    -1,    -1,     7,     8,    50,    10,    11,    12,
+      13,    14,    15,    16,    17,    -1,    19,    20,    -1,    22,
+      23,    24,    -1,    -1,    -1,   119,   120,   121,   122,   123,
+     124,   125,   126,   127,   128,   129,   130,   131,    -1,   133,
+      -1,   135,   136,   137,    -1,   139,   140,    50,    -1,    -1,
+      -1,    -1,    -1,     3,     4,    -1,    -1,     7,     8,     9,
+      -1,    -1,   156,    -1,    -1,    -1,    -1,    -1,    -1,    19,
+      20,   165,    22,    23,    24,    25,    26,    27,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      40,    41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   161,   162,    -1,
+      -1,   165,    -1,   167,   168,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   161,   162,
+      -1,    -1,   165,    -1,   167,   168,    -1,    -1,    -1,   119,
+     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
+     130,   131,    -1,   133,    -1,   135,   136,   137,    -1,   139,
+     140,     7,     8,    -1,    -1,    -1,    -1,    -1,     0,    -1,
+      -1,    -1,    -1,    19,    20,    -1,    22,    23,    24,    25,
+      -1,    -1,    -1,    -1,    -1,   165,    18,    19,    20,    -1,
+      22,    23,    24,    -1,    40,    41,    -1,    -1,    30,    31,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      52,    -1,    -1,    -1,    56,    -1,    -1,    -1,    60,    75,
       76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   159,
-     160,    -1,    -1,   163,    -1,   165,   166,    -1,    -1,    -1,
+      86,    87,    88,    89,    90,    91,    92,    93,    -1,     7,
+       8,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
+      -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1,
       -1,    -1,    -1,   119,   120,   121,   122,   123,   124,   125,
      126,   127,   128,   129,   130,   131,    -1,   133,    -1,   135,
-     136,   137,     7,     8,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    19,    20,    -1,    22,    23,    24,
-      25,    -1,    -1,    -1,    -1,    -1,    -1,   163,    -1,    -1,
+     136,   137,    50,   139,   140,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     156,    -1,     7,     8,   160,    -1,   162,    -1,    -1,   165,
+      -1,   167,    -1,   169,    19,    20,    -1,    22,    23,    24,
+      25,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    40,    41,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     7,     8,
-      55,    10,    11,    12,    13,    14,    15,    16,    17,    -1,
-      19,    20,    -1,    22,    23,    24,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      55,    -1,    -1,    -1,    -1,    -1,    -1,   125,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
       85,    86,    87,    88,    89,    90,    91,    92,    93,    -1,
-      -1,    50,     7,     8,    -1,    10,    11,    12,    13,    14,
-      15,    16,    17,    -1,    19,    20,    -1,    22,    23,    24,
+      -1,    -1,    -1,   161,   162,    -1,    -1,   165,    -1,   167,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,   124,
      125,   126,   127,   128,   129,   130,   131,    -1,   133,    -1,
-     135,   136,   137,    -1,    -1,    50,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   154,
-      -1,     7,     8,   158,    -1,   160,    -1,    -1,   163,    -1,
-     165,    -1,   167,    19,    20,    -1,    22,    23,    24,    25,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    40,    41,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,
-     159,   160,    -1,    -1,   163,    -1,   165,   166,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,
-      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    -1,    -1,
-      -1,    -1,    -1,    -1,   159,   160,    -1,    -1,   163,    -1,
-     165,   166,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   119,   120,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,    -1,   133,    -1,   135,
-     136,   137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       3,     4,    -1,    -1,    -1,    -1,     9,    -1,   154,    -1,
-      -1,    -1,    -1,    -1,   160,    -1,    -1,   163,    -1,   165,
-      -1,   167,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    40,    41,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    75,    76,    77,    78,    79,    80,    81,    82,
-      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    -1,    -1,    -1,    -1,    -1,    -1,     7,     8,    -1,
+     135,   136,   137,    -1,   139,   140,    -1,     7,     8,    -1,
       10,    11,    12,    13,    14,    15,    16,    17,    -1,    19,
-      20,    -1,    22,    23,    24,    -1,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,   130,   131,    39,
-     133,    -1,   135,   136,   137,    -1,    -1,    -1,     7,     8,
+      20,   156,    22,    23,    24,    -1,    -1,   162,    -1,    -1,
+     165,    -1,   167,    -1,   169,    -1,    -1,    -1,    -1,    39,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     7,     8,
       50,    10,    11,    12,    13,    14,    15,    16,    17,    -1,
-      19,    20,    -1,    22,    23,    24,    -1,    -1,     7,     8,
-     163,    10,    11,    12,    13,    14,    15,    16,    17,    -1,
-      19,    20,    -1,    22,    23,    24,    -1,    -1,    -1,     7,
-       8,    50,    10,    11,    12,    13,    14,    15,    16,    17,
-      39,    19,    20,    -1,    22,    23,    24,    -1,    -1,     7,
-       8,    50,    10,    11,    12,    13,    14,    15,    16,    17,
-      -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1,
-       7,     8,    50,    10,    11,    12,    13,    14,    15,    16,
-      17,    39,    19,    20,    -1,    22,    23,    24,    -1,    -1,
-      -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,   159,
-     160,    -1,    39,   163,    -1,   165,   125,    -1,    -1,    -1,
-      -1,     7,     8,    50,    10,    11,    12,    13,    14,    15,
-      16,    17,    -1,    19,    20,    -1,    22,    23,    24,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     159,   160,    -1,    -1,   163,    -1,   165,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
-     159,   160,    -1,    -1,   163,    -1,   165,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   159,   160,    -1,   162,   163,    -1,   165,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   159,   160,    -1,    -1,   163,    -1,   165,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   159,   160,    -1,    -1,   163,    -1,   165,     7,
+      19,    20,    -1,    22,    23,    24,     7,     8,    -1,    10,
+      11,    12,    13,    14,    15,    16,    17,    -1,    19,    20,
+      -1,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,     7,     8,    50,
+      10,    11,    12,    13,    14,    15,    16,    17,    -1,    19,
+      20,    -1,    22,    23,    24,     7,     8,    -1,    10,    11,
+      12,    13,    14,    15,    16,    17,    -1,    19,    20,    39,
+      22,    23,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   161,   162,    -1,    -1,   165,    -1,   167,    50,     7,
        8,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
       -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   159,   160,    -1,    -1,   163,    -1,   165,
-       7,     8,    50,    10,    11,    12,    13,    14,    15,    16,
-      17,    -1,    19,    20,    -1,    22,    23,    24,     7,     8,
-      -1,    10,    11,    12,    13,    14,    15,    16,    17,    -1,
-      19,    20,    -1,    22,    23,    24,    -1,    -1,    -1,    -1,
-      -1,     7,     8,    50,    10,    11,    12,    13,    14,    15,
-      16,    17,    -1,    19,    20,    -1,    22,    23,    24,     7,
-       8,    50,    10,    11,    12,    13,    14,    15,    16,    17,
-      -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1,
-      -1,    -1,     7,     8,    50,    10,    11,    12,    13,    14,
-      15,    16,    17,    -1,    19,    20,    -1,    22,    23,    24,
+      -1,    -1,   161,   162,    -1,   164,   165,    -1,   167,    -1,
       -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   159,   160,    -1,    -1,   163,    -1,   165,    -1,    -1,
+     161,   162,    -1,    -1,   165,    -1,   167,     7,     8,    -1,
+      10,    11,    12,    13,    14,    15,    16,    17,    -1,    19,
+      20,    -1,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   161,   162,    -1,    -1,   165,    -1,   167,    -1,    -1,
+      50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   161,
+     162,    -1,    -1,   165,    -1,   167,    -1,     7,     8,    -1,
+      10,    11,    12,    13,    14,    15,    16,    17,    -1,    19,
+      20,    -1,    22,    23,    24,     7,     8,    -1,    10,    11,
+      12,    13,    14,    15,    16,    17,    -1,    19,    20,    -1,
+      22,    23,    24,   161,   162,    -1,    -1,   165,    -1,   167,
+      50,    -1,    -1,    -1,     7,     8,    -1,    10,    11,    12,
+      13,    14,    15,    16,    17,    -1,    19,    20,    50,    22,
+      23,    24,     7,     8,    -1,    10,    11,    12,    13,    14,
+      15,    16,    17,    -1,    19,    20,    -1,    22,    23,    24,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,
+      -1,   161,   162,    -1,    -1,   165,    -1,   167,    -1,    -1,
       -1,    -1,    -1,     7,     8,    50,    10,    11,    12,    13,
       14,    15,    16,    17,    -1,    19,    20,    -1,    22,    23,
       24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   159,   160,    -1,    -1,   163,    -1,   165,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,
-     159,   160,    -1,    -1,   163,    -1,   165,    -1,    -1,    -1,
+      -1,   161,   162,    -1,    -1,   165,    -1,   167,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   161,
+     162,    -1,    -1,   165,    -1,   167,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   159,   160,    -1,    -1,   163,    -1,   165,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,
-      -1,   159,   160,    -1,    -1,   163,    -1,   165,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,
-      58,    -1,    -1,    -1,   159,   160,    -1,    -1,   163,    -1,
-     165,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
-      88,    89,    90,    91,    92,    93,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   159,   160,    -1,    -1,   163,
-      -1,   165,    -1,    -1,    -1,    -1,   114,   115,   116,    -1,
-      -1,   119,   120,   121,   122,   123,   124,   125,   126,   127,
-     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
-     138
+      36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   161,   162,
+      -1,    -1,   165,    -1,   167,    -1,    -1,    -1,    -1,    -1,
+      -1,    57,    58,    -1,    -1,    -1,   161,   162,    -1,    -1,
+     165,    -1,   167,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   161,   162,    -1,
+      -1,   165,    -1,   167,    -1,    -1,    -1,    -1,   114,   115,
+     116,    -1,    -1,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -2624,71 +2660,73 @@
 static const yytype_uint8 yystos[] =
 {
        0,    19,    20,    22,    23,    24,    30,    31,    52,    56,
-      60,   176,   179,   180,   181,   182,   214,   215,   216,   218,
-     217,    53,    68,   223,   156,    59,   156,    18,   156,    42,
-      43,    44,    45,    46,    47,    48,    49,    51,   151,   152,
-     153,   183,   184,   185,     0,   216,    46,    48,   186,   233,
-      42,    43,    44,    47,   187,   230,   232,   240,   156,   156,
-     160,   224,    22,   222,     7,     8,    10,    11,    12,    13,
-      14,    15,    16,    17,    50,   159,   160,   163,   165,   176,
-     180,   201,   202,   236,   185,   185,    35,    37,   212,   185,
-     185,    21,   241,   242,    29,   166,   231,   241,    22,    22,
-      22,   225,   154,     4,     4,     4,   165,    10,   166,   202,
-     207,    55,   154,   178,   212,   212,    42,    44,   188,    32,
-      33,   211,    62,    63,    64,    65,    66,    67,   189,   228,
-     228,   179,   245,   157,   162,    39,   202,   203,   205,   206,
-     161,   161,   166,   207,   157,   166,   154,   206,   158,   211,
-     211,    10,   125,   202,   204,   213,    11,    12,    13,    14,
-      15,    16,   174,   175,   202,   208,     4,   204,    28,   165,
-     229,    36,    57,    58,    69,    70,    71,    72,    73,    74,
+      60,   178,   181,   182,   183,   184,   216,   217,   218,   220,
+     219,    53,    68,   225,   158,    59,   158,    18,   158,    42,
+      43,    44,    45,    46,    47,    48,    49,    51,   153,   154,
+     155,   185,   186,   187,     0,   218,    46,    48,   188,   235,
+      42,    43,    44,    47,   189,   232,   234,   242,   158,   158,
+     162,   226,    22,   224,     7,     8,    10,    11,    12,    13,
+      14,    15,    16,    17,    50,   161,   162,   165,   167,   178,
+     182,   203,   204,   238,   187,   187,    35,    37,   214,   187,
+     187,    21,   243,   244,    29,   168,   233,   243,    22,    22,
+      22,   227,   156,     4,     4,     4,   167,    10,   168,   204,
+     209,    55,   156,   180,   214,   214,    42,    44,   190,    32,
+      33,   213,    62,    63,    64,    65,    66,    67,   191,   230,
+     230,   181,   247,   159,   164,    39,   204,   205,   207,   208,
+     163,   163,   168,   209,   159,   168,   156,   208,   160,   213,
+     213,    10,   125,   204,   206,   215,    11,    12,    13,    14,
+      15,    16,   176,   177,   204,   210,     4,   206,    28,   167,
+     231,    36,    57,    58,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
       85,    86,    87,    88,    89,    90,    91,    92,    93,   114,
      115,   116,   119,   120,   121,   122,   123,   124,   125,   126,
      127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   138,   169,   170,   171,   243,   249,   250,   251,   252,
-      22,   191,   157,   155,   202,   202,   164,   166,   202,     4,
-     155,   208,   202,   154,   236,    26,    27,     3,     4,     5,
-       6,     9,    25,    40,    41,    90,    91,    92,    93,   119,
-     133,   135,   136,   137,   160,   163,   165,   167,   169,   170,
-     171,   209,   236,   178,   180,    57,    10,   202,   238,   239,
-      11,    17,    11,   174,   189,    94,    95,    96,    97,    98,
-      99,   100,   101,   102,   103,   172,    26,    27,   100,   101,
-     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-     112,   113,   173,   172,   173,   202,   202,   238,   202,   202,
-     246,   238,   238,   238,   238,   238,   202,   202,   202,   238,
-     189,   117,   118,    54,   121,   122,   139,   140,   142,   143,
-     145,   146,   147,   190,    39,   203,   193,   162,   164,   164,
-     155,   193,   178,   178,   213,   172,   173,   172,   173,   154,
-     154,   154,   154,   154,   162,   208,   210,   165,   210,   166,
-     210,    22,   154,   154,   154,   219,   154,     3,     4,     9,
-      25,    26,    27,    40,    41,    59,   163,   209,   235,   236,
-     237,   157,   237,   237,   237,   204,   202,   202,   202,   202,
-     157,   196,   157,   196,   237,   160,   157,   157,   157,   157,
-     157,   157,   237,   237,   237,    38,   204,   202,   238,     4,
-     139,   140,   141,   144,   148,   149,   192,   220,   221,    38,
-     154,   154,   154,   154,   208,   208,   208,   208,   208,   157,
-     162,   166,   202,   210,   164,   166,   208,   208,   208,   157,
-     199,    39,   202,   226,   227,    61,   234,   210,   238,   157,
-     157,   237,   237,   237,   237,   237,    11,    54,    11,   248,
-     237,   160,   238,   202,   238,   238,   238,   157,   157,   157,
-     202,   237,   237,   157,   199,   199,   202,   208,   208,   208,
-     208,   248,   157,   157,   157,   157,   208,   164,   166,   157,
-     157,    38,    34,    54,   197,   200,   191,   157,   155,    22,
-     164,    17,    17,   154,   157,   157,   157,   157,   237,     4,
-     237,   157,   157,   237,   157,   157,   157,     4,   237,   237,
-     154,   157,   196,   202,   155,   157,   157,   157,   157,   155,
-     208,   208,   208,   208,   164,   208,   208,   202,    22,     4,
-     199,   176,   177,    39,   202,   193,   157,   237,   237,    17,
-     202,   247,   237,   237,   237,   237,   196,   196,   238,   237,
-     157,   238,   238,   238,   247,   237,   208,   208,   208,   208,
-     157,   155,   157,   157,   155,   155,   155,   191,   197,   198,
-      22,   157,   160,   191,   191,   155,   157,   162,   237,   155,
-     196,   155,   155,   155,   155,   208,   208,   208,   177,    54,
-     195,    17,   162,   174,   244,   121,   122,   237,   237,   193,
-      17,   202,   162,   193,   155,   155,   155,     4,   150,   194,
-     237,   235,   162,   174,   191,   191,    38,   191,   191,    22,
-     157,   235,    17,   237,   237,    17,   157,   237,   191,   191,
-     237,    17,    73,   237,    17,   237
+     137,   138,   139,   140,   171,   172,   173,   245,   251,   252,
+     253,   254,    22,   193,   159,   157,   204,   204,   166,   168,
+     204,     4,   157,   210,   204,   156,   238,    26,    27,     3,
+       4,     5,     6,     9,    25,    40,    41,    90,    91,    92,
+      93,   119,   133,   135,   136,   137,   139,   140,   162,   165,
+     167,   169,   171,   172,   173,   211,   238,   180,   182,    57,
+      10,   204,   240,   241,    11,    17,    11,   176,   191,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   174,
+      26,    27,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   111,   112,   113,   175,   174,   175,   204,
+     204,   240,   204,   204,   248,   240,   240,   240,   240,   240,
+     204,   204,   204,   204,   204,   240,   191,   117,   118,    54,
+     121,   122,   141,   142,   144,   145,   147,   148,   149,   192,
+      39,   205,   195,   164,   166,   166,   157,   195,   180,   180,
+     215,   174,   175,   174,   175,   156,   156,   156,   156,   156,
+     156,   156,   164,   210,   212,   167,   212,   168,   212,    22,
+     156,   156,   156,   221,   156,     3,     4,     9,    25,    26,
+      27,    40,    41,    59,   165,   211,   237,   238,   239,   159,
+     239,   239,   239,   206,   204,   204,   204,   204,   159,   198,
+     159,   198,   239,   162,   159,   159,   159,   159,   159,   159,
+     239,   239,   239,   239,   239,    38,   206,   204,   240,     4,
+     141,   142,   143,   146,   150,   151,   194,   222,   223,    38,
+     156,   156,   156,   156,   210,   210,   210,   210,   210,   210,
+     210,   159,   164,   168,   204,   212,   166,   168,   210,   210,
+     210,   159,   201,    39,   204,   228,   229,    61,   236,   212,
+     240,   159,   159,   239,   239,   239,   239,   239,    11,    54,
+      11,   250,   239,   162,   240,   204,   240,   240,   240,   159,
+     250,   159,   159,   159,   204,   239,   239,   159,   201,   201,
+     204,   210,   210,   210,   210,   250,   159,   159,   159,   159,
+     250,   159,   210,   166,   168,   159,   159,    38,    34,    54,
+     199,   202,   193,   159,   157,    22,   166,    17,    17,   156,
+     159,   159,   159,   159,   239,     4,   239,   159,   159,   239,
+     159,   159,   159,     4,   204,   239,   239,   156,   159,   198,
+     204,   157,   159,   159,   159,   159,   157,   210,   210,   210,
+     210,   157,   210,   166,   210,   210,   204,    22,     4,   201,
+     178,   179,    39,   204,   195,   159,   239,   239,    17,   204,
+     249,   239,   239,   239,   239,   198,   198,   240,   239,   159,
+     240,   240,   240,   239,   249,   239,   210,   210,   210,   210,
+     159,   157,   159,   159,   250,   157,   157,   157,   193,   199,
+     200,    22,   159,   162,   193,   193,   157,   159,   164,   239,
+     250,   157,   198,   157,   157,   157,   157,   210,   210,   210,
+     157,   179,    54,   197,    17,   164,   176,   246,   121,   122,
+     239,   239,   195,    17,   204,   164,   195,   157,   157,   157,
+       4,   152,   196,   239,   237,   164,   176,   193,   193,    38,
+     193,   193,    22,   159,   237,    17,   239,   239,    17,   159,
+     239,   193,   193,   239,    17,    73,   239,    17,   239
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -3503,152 +3541,152 @@
   switch (yyn)
     {
         case 29:
-#line 1117 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1118 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_EQ; ;}
     break;
 
   case 30:
-#line 1117 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1118 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_NE; ;}
     break;
 
   case 31:
-#line 1118 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1119 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SLT; ;}
     break;
 
   case 32:
-#line 1118 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1119 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SGT; ;}
     break;
 
   case 33:
-#line 1119 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1120 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SLE; ;}
     break;
 
   case 34:
-#line 1119 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1120 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SGE; ;}
     break;
 
   case 35:
-#line 1120 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1121 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_ULT; ;}
     break;
 
   case 36:
-#line 1120 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1121 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_UGT; ;}
     break;
 
   case 37:
-#line 1121 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1122 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_ULE; ;}
     break;
 
   case 38:
-#line 1121 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1122 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_UGE; ;}
     break;
 
   case 39:
-#line 1125 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1126 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OEQ; ;}
     break;
 
   case 40:
-#line 1125 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1126 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ONE; ;}
     break;
 
   case 41:
-#line 1126 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1127 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OLT; ;}
     break;
 
   case 42:
-#line 1126 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1127 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OGT; ;}
     break;
 
   case 43:
-#line 1127 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1128 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OLE; ;}
     break;
 
   case 44:
-#line 1127 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1128 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OGE; ;}
     break;
 
   case 45:
-#line 1128 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1129 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ORD; ;}
     break;
 
   case 46:
-#line 1128 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1129 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UNO; ;}
     break;
 
   case 47:
-#line 1129 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1130 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UEQ; ;}
     break;
 
   case 48:
-#line 1129 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1130 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UNE; ;}
     break;
 
   case 49:
-#line 1130 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1131 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ULT; ;}
     break;
 
   case 50:
-#line 1130 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1131 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UGT; ;}
     break;
 
   case 51:
-#line 1131 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1132 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ULE; ;}
     break;
 
   case 52:
-#line 1131 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1132 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UGE; ;}
     break;
 
   case 53:
-#line 1132 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1133 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_TRUE; ;}
     break;
 
   case 54:
-#line 1133 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1134 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_FALSE; ;}
     break;
 
   case 65:
-#line 1142 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1143 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.StrVal) = 0; ;}
     break;
 
   case 66:
-#line 1144 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1145 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal)=(yyvsp[(3) - (4)].UInt64Val); ;}
     break;
 
   case 67:
-#line 1145 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1146 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal)=0; ;}
     break;
 
   case 68:
-#line 1149 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1150 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.StrVal) = (yyvsp[(1) - (2)].StrVal);
     CHECK_FOR_ERROR
@@ -3656,7 +3694,7 @@
     break;
 
   case 69:
-#line 1153 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1154 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.StrVal) = 0;
     CHECK_FOR_ERROR
@@ -3664,7 +3702,7 @@
     break;
 
   case 73:
-#line 1161 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1162 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.StrVal) = 0;
     CHECK_FOR_ERROR
@@ -3672,7 +3710,7 @@
     break;
 
   case 74:
-#line 1166 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1167 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.StrVal) = (yyvsp[(1) - (2)].StrVal);
     CHECK_FOR_ERROR
@@ -3680,157 +3718,157 @@
     break;
 
   case 75:
-#line 1172 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1173 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
     break;
 
   case 76:
-#line 1173 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1174 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
     break;
 
   case 77:
-#line 1174 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1175 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
     break;
 
   case 78:
-#line 1175 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1176 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;}
     break;
 
   case 79:
-#line 1176 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1177 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
     break;
 
   case 80:
-#line 1177 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1178 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::CommonLinkage; ;}
     break;
 
   case 81:
-#line 1181 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1182 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
     break;
 
   case 82:
-#line 1182 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1183 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
     break;
 
   case 83:
-#line 1183 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1184 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 84:
-#line 1187 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1188 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::DefaultVisibility;   ;}
     break;
 
   case 85:
-#line 1188 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1189 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::DefaultVisibility;   ;}
     break;
 
   case 86:
-#line 1189 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1190 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::HiddenVisibility;    ;}
     break;
 
   case 87:
-#line 1190 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1191 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::ProtectedVisibility; ;}
     break;
 
   case 88:
-#line 1194 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1195 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 89:
-#line 1195 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1196 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
     break;
 
   case 90:
-#line 1196 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1197 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
     break;
 
   case 91:
-#line 1200 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1201 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 92:
-#line 1201 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1202 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
     break;
 
   case 93:
-#line 1202 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1203 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
     break;
 
   case 94:
-#line 1203 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1204 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
     break;
 
   case 95:
-#line 1204 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1205 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
     break;
 
   case 96:
-#line 1208 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1209 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 97:
-#line 1209 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1210 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
     break;
 
   case 98:
-#line 1210 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1211 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
     break;
 
   case 99:
-#line 1213 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1214 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::C; ;}
     break;
 
   case 100:
-#line 1214 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1215 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::C; ;}
     break;
 
   case 101:
-#line 1215 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1216 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::Fast; ;}
     break;
 
   case 102:
-#line 1216 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1217 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::Cold; ;}
     break;
 
   case 103:
-#line 1217 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1218 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::X86_StdCall; ;}
     break;
 
   case 104:
-#line 1218 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1219 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::X86_FastCall; ;}
     break;
 
   case 105:
-#line 1219 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1220 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
                    if ((unsigned)(yyvsp[(2) - (2)].UInt64Val) != (yyvsp[(2) - (2)].UInt64Val))
                      GEN_ERROR("Calling conv too large");
@@ -3840,129 +3878,129 @@
     break;
 
   case 106:
-#line 1226 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1227 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::ZExt;      ;}
     break;
 
   case 107:
-#line 1227 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1228 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::ZExt;      ;}
     break;
 
   case 108:
-#line 1228 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1229 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::SExt;      ;}
     break;
 
   case 109:
-#line 1229 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1230 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::SExt;      ;}
     break;
 
   case 110:
-#line 1230 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1231 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::InReg;     ;}
     break;
 
   case 111:
-#line 1231 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1232 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::StructRet; ;}
     break;
 
   case 112:
-#line 1232 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1233 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::NoAlias;   ;}
     break;
 
   case 113:
-#line 1233 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1234 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::ByVal;     ;}
     break;
 
   case 114:
-#line 1234 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1235 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::Nest;      ;}
     break;
 
   case 115:
-#line 1235 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1236 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = 
                           ParamAttr::constructAlignmentFromInt((yyvsp[(2) - (2)].UInt64Val));    ;}
     break;
 
   case 116:
-#line 1239 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1240 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::None; ;}
     break;
 
   case 117:
-#line 1240 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1241 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
                 (yyval.ParamAttrs) = (yyvsp[(1) - (2)].ParamAttrs) | (yyvsp[(2) - (2)].ParamAttrs);
               ;}
     break;
 
   case 118:
-#line 1245 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1246 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::NoReturn; ;}
     break;
 
   case 119:
-#line 1246 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1247 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::NoUnwind; ;}
     break;
 
   case 120:
-#line 1247 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1248 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::ZExt;     ;}
     break;
 
   case 121:
-#line 1248 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1249 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::SExt;     ;}
     break;
 
   case 122:
-#line 1249 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1250 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::ReadNone; ;}
     break;
 
   case 123:
-#line 1250 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1251 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::ReadOnly; ;}
     break;
 
   case 124:
-#line 1253 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1254 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::None; ;}
     break;
 
   case 125:
-#line 1254 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1255 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
                 (yyval.ParamAttrs) = (yyvsp[(1) - (2)].ParamAttrs) | (yyvsp[(2) - (2)].ParamAttrs);
               ;}
     break;
 
   case 126:
-#line 1259 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1260 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.StrVal) = 0; ;}
     break;
 
   case 127:
-#line 1260 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1261 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
                 (yyval.StrVal) = (yyvsp[(2) - (2)].StrVal);
               ;}
     break;
 
   case 128:
-#line 1267 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1268 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = 0; ;}
     break;
 
   case 129:
-#line 1268 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1269 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.UIntVal) = (yyvsp[(2) - (2)].UInt64Val);
   if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
@@ -3972,12 +4010,12 @@
     break;
 
   case 130:
-#line 1274 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1275 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = 0; ;}
     break;
 
   case 131:
-#line 1275 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1276 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.UIntVal) = (yyvsp[(3) - (3)].UInt64Val);
   if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
@@ -3987,7 +4025,7 @@
     break;
 
   case 132:
-#line 1284 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1285 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   for (unsigned i = 0, e = (yyvsp[(2) - (2)].StrVal)->length(); i != e; ++i)
     if ((*(yyvsp[(2) - (2)].StrVal))[i] == '"' || (*(yyvsp[(2) - (2)].StrVal))[i] == '\\')
@@ -3998,27 +4036,27 @@
     break;
 
   case 133:
-#line 1292 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1293 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.StrVal) = 0; ;}
     break;
 
   case 134:
-#line 1293 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1294 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.StrVal) = (yyvsp[(1) - (1)].StrVal); ;}
     break;
 
   case 135:
-#line 1298 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1299 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {;}
     break;
 
   case 136:
-#line 1299 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1300 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {;}
     break;
 
   case 137:
-#line 1300 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1301 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurGV->setSection(*(yyvsp[(1) - (1)].StrVal));
     delete (yyvsp[(1) - (1)].StrVal);
@@ -4027,7 +4065,7 @@
     break;
 
   case 138:
-#line 1305 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1306 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(2) - (2)].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[(2) - (2)].UInt64Val)))
       GEN_ERROR("Alignment must be a power of two");
@@ -4037,7 +4075,7 @@
     break;
 
   case 146:
-#line 1321 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1322 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeVal) = new PATypeHolder(OpaqueType::get());
     CHECK_FOR_ERROR
@@ -4045,7 +4083,7 @@
     break;
 
   case 147:
-#line 1325 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1326 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeVal) = new PATypeHolder((yyvsp[(1) - (1)].PrimType));
     CHECK_FOR_ERROR
@@ -4053,7 +4091,7 @@
     break;
 
   case 148:
-#line 1329 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1330 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {                             // Pointer type?
     if (*(yyvsp[(1) - (3)].TypeVal) == Type::LabelTy)
       GEN_ERROR("Cannot form a pointer to a basic block");
@@ -4064,7 +4102,7 @@
     break;
 
   case 149:
-#line 1336 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1337 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {            // Named types are also simple types...
     const Type* tmp = getTypeVal((yyvsp[(1) - (1)].ValIDVal));
     CHECK_FOR_ERROR
@@ -4073,7 +4111,7 @@
     break;
 
   case 150:
-#line 1341 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1342 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {                   // Type UpReference
     if ((yyvsp[(2) - (2)].UInt64Val) > (uint64_t)~0U) GEN_ERROR("Value out of range");
     OpaqueType *OT = OpaqueType::get();        // Use temporary placeholder
@@ -4085,7 +4123,7 @@
     break;
 
   case 151:
-#line 1349 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1350 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // Allow but ignore attributes on function types; this permits auto-upgrade.
     // FIXME: remove in LLVM 3.0.
@@ -4118,7 +4156,7 @@
     break;
 
   case 152:
-#line 1378 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1379 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // Allow but ignore attributes on function types; this permits auto-upgrade.
     // FIXME: remove in LLVM 3.0.
@@ -4146,7 +4184,7 @@
     break;
 
   case 153:
-#line 1403 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1404 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {          // Sized array type?
     (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(ArrayType::get(*(yyvsp[(4) - (5)].TypeVal), (unsigned)(yyvsp[(2) - (5)].UInt64Val))));
     delete (yyvsp[(4) - (5)].TypeVal);
@@ -4155,7 +4193,7 @@
     break;
 
   case 154:
-#line 1408 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1409 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {          // Vector type?
      const llvm::Type* ElemTy = (yyvsp[(4) - (5)].TypeVal)->get();
      if ((unsigned)(yyvsp[(2) - (5)].UInt64Val) != (yyvsp[(2) - (5)].UInt64Val))
@@ -4169,7 +4207,7 @@
     break;
 
   case 155:
-#line 1418 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1419 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {                        // Structure type?
     std::vector<const Type*> Elements;
     for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[(2) - (3)].TypeList)->begin(),
@@ -4183,7 +4221,7 @@
     break;
 
   case 156:
-#line 1428 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1429 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {                                  // Empty structure type?
     (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>()));
     CHECK_FOR_ERROR
@@ -4191,7 +4229,7 @@
     break;
 
   case 157:
-#line 1432 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1433 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     std::vector<const Type*> Elements;
     for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[(3) - (5)].TypeList)->begin(),
@@ -4205,7 +4243,7 @@
     break;
 
   case 158:
-#line 1442 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1443 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {                         // Empty structure type?
     (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>(), true));
     CHECK_FOR_ERROR
@@ -4213,7 +4251,7 @@
     break;
 
   case 159:
-#line 1449 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1450 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // Allow but ignore attributes on function types; this permits auto-upgrade.
     // FIXME: remove in LLVM 3.0.
@@ -4223,7 +4261,7 @@
     break;
 
   case 160:
-#line 1458 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1459 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (1)].TypeVal))->getDescription());
@@ -4234,14 +4272,14 @@
     break;
 
   case 161:
-#line 1465 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1466 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeVal) = new PATypeHolder(Type::VoidTy);
   ;}
     break;
 
   case 162:
-#line 1470 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1471 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
     (yyval.TypeWithAttrsList)->push_back((yyvsp[(1) - (1)].TypeWithAttrs));
@@ -4250,7 +4288,7 @@
     break;
 
   case 163:
-#line 1475 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1476 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     ((yyval.TypeWithAttrsList)=(yyvsp[(1) - (3)].TypeWithAttrsList))->push_back((yyvsp[(3) - (3)].TypeWithAttrs));
     CHECK_FOR_ERROR
@@ -4258,7 +4296,7 @@
     break;
 
   case 165:
-#line 1483 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1484 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList)=(yyvsp[(1) - (3)].TypeWithAttrsList);
     TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None;
@@ -4269,7 +4307,7 @@
     break;
 
   case 166:
-#line 1490 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1491 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList) = new TypeWithAttrsList;
     TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None;
@@ -4280,7 +4318,7 @@
     break;
 
   case 167:
-#line 1497 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1498 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
     CHECK_FOR_ERROR
@@ -4288,7 +4326,7 @@
     break;
 
   case 168:
-#line 1505 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1506 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeList) = new std::list<PATypeHolder>();
     (yyval.TypeList)->push_back(*(yyvsp[(1) - (1)].TypeVal)); 
@@ -4298,7 +4336,7 @@
     break;
 
   case 169:
-#line 1511 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1512 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     ((yyval.TypeList)=(yyvsp[(1) - (3)].TypeList))->push_back(*(yyvsp[(3) - (3)].TypeVal)); 
     delete (yyvsp[(3) - (3)].TypeVal);
@@ -4307,7 +4345,7 @@
     break;
 
   case 170:
-#line 1523 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1524 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { // Nonempty unsized arr
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (4)].TypeVal))->getDescription());
@@ -4339,7 +4377,7 @@
     break;
 
   case 171:
-#line 1551 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1552 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
@@ -4359,7 +4397,7 @@
     break;
 
   case 172:
-#line 1567 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1568 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
@@ -4390,7 +4428,7 @@
     break;
 
   case 173:
-#line 1594 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1595 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { // Nonempty unsized arr
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (4)].TypeVal))->getDescription());
@@ -4422,7 +4460,7 @@
     break;
 
   case 174:
-#line 1622 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1623 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (4)].TypeVal)->get());
     if (STy == 0)
@@ -4452,7 +4490,7 @@
     break;
 
   case 175:
-#line 1648 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1649 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
@@ -4476,7 +4514,7 @@
     break;
 
   case 176:
-#line 1668 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1669 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (6)].TypeVal)->get());
     if (STy == 0)
@@ -4506,7 +4544,7 @@
     break;
 
   case 177:
-#line 1694 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1695 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (5)].TypeVal))->getDescription());
@@ -4530,7 +4568,7 @@
     break;
 
   case 178:
-#line 1714 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1715 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -4546,7 +4584,7 @@
     break;
 
   case 179:
-#line 1726 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1727 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -4557,7 +4595,7 @@
     break;
 
   case 180:
-#line 1733 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1734 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -4627,7 +4665,7 @@
     break;
 
   case 181:
-#line 1799 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1800 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -4641,7 +4679,7 @@
     break;
 
   case 182:
-#line 1809 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1810 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -4655,7 +4693,7 @@
     break;
 
   case 183:
-#line 1819 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1820 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {      // integral constants
     if (!ConstantInt::isValueValidForType((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].SInt64Val)))
       GEN_ERROR("Constant value doesn't fit in type");
@@ -4665,7 +4703,7 @@
     break;
 
   case 184:
-#line 1825 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1826 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {      // arbitrary precision integer constants
     uint32_t BitWidth = cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth();
     if ((yyvsp[(2) - (2)].APIntVal)->getBitWidth() > BitWidth) {
@@ -4679,7 +4717,7 @@
     break;
 
   case 185:
-#line 1835 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1836 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {      // integral constants
     if (!ConstantInt::isValueValidForType((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].UInt64Val)))
       GEN_ERROR("Constant value doesn't fit in type");
@@ -4689,7 +4727,7 @@
     break;
 
   case 186:
-#line 1841 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1842 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {      // arbitrary precision integer constants
     uint32_t BitWidth = cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth();
     if ((yyvsp[(2) - (2)].APIntVal)->getBitWidth() > BitWidth) {
@@ -4703,7 +4741,7 @@
     break;
 
   case 187:
-#line 1851 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1852 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {                      // Boolean constants
     assert(cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth() == 1 && "Not Bool?");
     (yyval.ConstVal) = ConstantInt::getTrue();
@@ -4712,7 +4750,7 @@
     break;
 
   case 188:
-#line 1856 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1857 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {                     // Boolean constants
     assert(cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth() == 1 && "Not Bool?");
     (yyval.ConstVal) = ConstantInt::getFalse();
@@ -4721,7 +4759,7 @@
     break;
 
   case 189:
-#line 1861 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1862 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {                   // Floating point constants
     if (!ConstantFP::isValueValidForType((yyvsp[(1) - (2)].PrimType), *(yyvsp[(2) - (2)].FPVal)))
       GEN_ERROR("Floating point constant invalid for type");
@@ -4736,7 +4774,7 @@
     break;
 
   case 190:
-#line 1874 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1875 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(5) - (6)].TypeVal))->getDescription());
@@ -4752,7 +4790,7 @@
     break;
 
   case 191:
-#line 1886 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1887 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!isa<PointerType>((yyvsp[(3) - (5)].ConstVal)->getType()))
       GEN_ERROR("GetElementPtr requires a pointer operand");
@@ -4777,7 +4815,7 @@
     break;
 
   case 192:
-#line 1907 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1908 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(3) - (8)].ConstVal)->getType() != Type::Int1Ty)
       GEN_ERROR("Select condition must be of boolean type");
@@ -4789,7 +4827,7 @@
     break;
 
   case 193:
-#line 1915 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1916 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(3) - (6)].ConstVal)->getType() != (yyvsp[(5) - (6)].ConstVal)->getType())
       GEN_ERROR("Binary operator types must match");
@@ -4799,7 +4837,7 @@
     break;
 
   case 194:
-#line 1921 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1922 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(3) - (6)].ConstVal)->getType() != (yyvsp[(5) - (6)].ConstVal)->getType())
       GEN_ERROR("Logical operator types must match");
@@ -4814,7 +4852,7 @@
     break;
 
   case 195:
-#line 1932 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1933 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
       GEN_ERROR("icmp operand types must match");
@@ -4823,7 +4861,7 @@
     break;
 
   case 196:
-#line 1937 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1938 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
       GEN_ERROR("fcmp operand types must match");
@@ -4832,7 +4870,7 @@
     break;
 
   case 197:
-#line 1942 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1943 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
       GEN_ERROR("vicmp operand types must match");
@@ -4841,7 +4879,7 @@
     break;
 
   case 198:
-#line 1947 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1948 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
       GEN_ERROR("vfcmp operand types must match");
@@ -4850,7 +4888,7 @@
     break;
 
   case 199:
-#line 1952 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1953 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!ExtractElementInst::isValidOperands((yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].ConstVal)))
       GEN_ERROR("Invalid extractelement operands");
@@ -4860,7 +4898,7 @@
     break;
 
   case 200:
-#line 1958 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1959 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!InsertElementInst::isValidOperands((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal)))
       GEN_ERROR("Invalid insertelement operands");
@@ -4870,7 +4908,7 @@
     break;
 
   case 201:
-#line 1964 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1965 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!ShuffleVectorInst::isValidOperands((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal)))
       GEN_ERROR("Invalid shufflevector operands");
@@ -4880,15 +4918,65 @@
     break;
 
   case 202:
-#line 1973 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1971 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
-    ((yyval.ConstVector) = (yyvsp[(1) - (3)].ConstVector))->push_back((yyvsp[(3) - (3)].ConstVal));
+    if (!isa<StructType>((yyvsp[(3) - (5)].ConstVal)->getType()) && !isa<ArrayType>((yyvsp[(3) - (5)].ConstVal)->getType()))
+      GEN_ERROR("ExtractValue requires an aggregate operand");
+
+    const Type *IdxTy =
+      ExtractValueInst::getIndexedType((yyvsp[(3) - (5)].ConstVal)->getType(), (yyvsp[(4) - (5)].ValueList)->begin(), (yyvsp[(4) - (5)].ValueList)->end());
+    if (!IdxTy)
+      GEN_ERROR("Index list invalid for constant extractvalue");
+
+    SmallVector<Constant*, 8> IdxVec;
+    for (unsigned i = 0, e = (yyvsp[(4) - (5)].ValueList)->size(); i != e; ++i)
+      if (Constant *C = dyn_cast<Constant>((*(yyvsp[(4) - (5)].ValueList))[i]))
+        IdxVec.push_back(C);
+      else
+        GEN_ERROR("Indices to constant extractvalue must be constants");
+
+    delete (yyvsp[(4) - (5)].ValueList);
+
+    (yyval.ConstVal) = ConstantExpr::getExtractValue((yyvsp[(3) - (5)].ConstVal), &IdxVec[0], IdxVec.size());
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 203:
-#line 1977 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1992 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+    {
+    if (!isa<StructType>((yyvsp[(3) - (7)].ConstVal)->getType()) && !isa<ArrayType>((yyvsp[(3) - (7)].ConstVal)->getType()))
+      GEN_ERROR("InsertValue requires an aggregate operand");
+
+    const Type *IdxTy =
+      ExtractValueInst::getIndexedType((yyvsp[(3) - (7)].ConstVal)->getType(), (yyvsp[(6) - (7)].ValueList)->begin(), (yyvsp[(6) - (7)].ValueList)->end());
+    if (IdxTy != (yyvsp[(5) - (7)].ConstVal)->getType())
+      GEN_ERROR("Index list invalid for constant insertvalue");
+
+    SmallVector<Constant*, 8> IdxVec;
+    for (unsigned i = 0, e = (yyvsp[(6) - (7)].ValueList)->size(); i != e; ++i)
+      if (Constant *C = dyn_cast<Constant>((*(yyvsp[(6) - (7)].ValueList))[i]))
+        IdxVec.push_back(C);
+      else
+        GEN_ERROR("Indices to constant insertvalue must be constants");
+
+    delete (yyvsp[(6) - (7)].ValueList);
+
+    (yyval.ConstVal) = ConstantExpr::getInsertValue((yyvsp[(3) - (7)].ConstVal), (yyvsp[(5) - (7)].ConstVal), &IdxVec[0], IdxVec.size());
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 204:
+#line 2016 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+    {
+    ((yyval.ConstVector) = (yyvsp[(1) - (3)].ConstVector))->push_back((yyvsp[(3) - (3)].ConstVal));
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 205:
+#line 2020 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ConstVector) = new std::vector<Constant*>();
     (yyval.ConstVector)->push_back((yyvsp[(1) - (1)].ConstVal));
@@ -4896,28 +4984,28 @@
   ;}
     break;
 
-  case 204:
-#line 1985 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 206:
+#line 2028 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = false; ;}
     break;
 
-  case 205:
-#line 1985 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 207:
+#line 2028 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = true; ;}
     break;
 
-  case 206:
-#line 1988 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 208:
+#line 2031 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = true; ;}
     break;
 
-  case 207:
-#line 1988 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 209:
+#line 2031 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = false; ;}
     break;
 
-  case 208:
-#line 1991 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 210:
+#line 2034 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     const Type* VTy = (yyvsp[(1) - (2)].TypeVal)->get();
     Value *V = getVal(VTy, (yyvsp[(2) - (2)].ValIDVal));
@@ -4932,8 +5020,8 @@
    ;}
     break;
 
-  case 209:
-#line 2003 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 211:
+#line 2046 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     Constant *Val = (yyvsp[(3) - (6)].ConstVal);
     const Type *DestTy = (yyvsp[(5) - (6)].TypeVal)->get();
@@ -4948,8 +5036,8 @@
    ;}
     break;
 
-  case 210:
-#line 2024 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 212:
+#line 2067 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
     CurModule.ModuleDone();
@@ -4957,8 +5045,8 @@
   ;}
     break;
 
-  case 211:
-#line 2029 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 213:
+#line 2072 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
     CurModule.ModuleDone();
@@ -4966,40 +5054,40 @@
   ;}
     break;
 
-  case 214:
-#line 2042 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 216:
+#line 2085 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { CurFun.isDeclare = false; ;}
     break;
 
-  case 215:
-#line 2042 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 217:
+#line 2085 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurFun.FunctionDone();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 216:
-#line 2046 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 218:
+#line 2089 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { CurFun.isDeclare = true; ;}
     break;
 
-  case 217:
-#line 2046 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 219:
+#line 2089 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 218:
-#line 2049 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 220:
+#line 2092 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 219:
-#line 2052 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 221:
+#line 2095 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (3)].TypeVal))->getDescription());
@@ -5026,8 +5114,8 @@
   ;}
     break;
 
-  case 220:
-#line 2076 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 222:
+#line 2119 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     ResolveTypeTo((yyvsp[(1) - (3)].StrVal), (yyvsp[(3) - (3)].PrimType));
 
@@ -5041,8 +5129,8 @@
   ;}
     break;
 
-  case 221:
-#line 2088 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 223:
+#line 2131 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { 
     /* "Externally Visible" Linkage */
     if ((yyvsp[(5) - (6)].ConstVal) == 0) 
@@ -5053,15 +5141,15 @@
   ;}
     break;
 
-  case 222:
-#line 2095 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 224:
+#line 2138 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurGV = 0;
   ;}
     break;
 
-  case 223:
-#line 2099 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 225:
+#line 2142 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(6) - (7)].ConstVal) == 0) 
       GEN_ERROR("Global value initializer is not a constant");
@@ -5070,15 +5158,15 @@
   ;}
     break;
 
-  case 224:
-#line 2104 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 226:
+#line 2147 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurGV = 0;
   ;}
     break;
 
-  case 225:
-#line 2108 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 227:
+#line 2151 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(6) - (7)].TypeVal))->getDescription());
@@ -5088,16 +5176,16 @@
   ;}
     break;
 
-  case 226:
-#line 2114 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 228:
+#line 2157 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurGV = 0;
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 227:
-#line 2118 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 229:
+#line 2161 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     std::string Name;
     if ((yyvsp[(1) - (5)].StrVal)) {
@@ -5140,22 +5228,22 @@
   ;}
     break;
 
-  case 228:
-#line 2158 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 230:
+#line 2201 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { 
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 229:
-#line 2161 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 231:
+#line 2204 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 230:
-#line 2167 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 232:
+#line 2210 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm();
   if (AsmSoFar.empty())
@@ -5167,24 +5255,24 @@
 ;}
     break;
 
-  case 231:
-#line 2177 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 233:
+#line 2220 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurModule.CurrentModule->setTargetTriple(*(yyvsp[(3) - (3)].StrVal));
     delete (yyvsp[(3) - (3)].StrVal);
   ;}
     break;
 
-  case 232:
-#line 2181 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 234:
+#line 2224 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurModule.CurrentModule->setDataLayout(*(yyvsp[(3) - (3)].StrVal));
     delete (yyvsp[(3) - (3)].StrVal);
   ;}
     break;
 
-  case 234:
-#line 2188 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 236:
+#line 2231 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
           CurModule.CurrentModule->addLibrary(*(yyvsp[(3) - (3)].StrVal));
           delete (yyvsp[(3) - (3)].StrVal);
@@ -5192,8 +5280,8 @@
         ;}
     break;
 
-  case 235:
-#line 2193 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 237:
+#line 2236 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
           CurModule.CurrentModule->addLibrary(*(yyvsp[(1) - (1)].StrVal));
           delete (yyvsp[(1) - (1)].StrVal);
@@ -5201,15 +5289,15 @@
         ;}
     break;
 
-  case 236:
-#line 2198 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 238:
+#line 2241 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
           CHECK_FOR_ERROR
         ;}
     break;
 
-  case 237:
-#line 2207 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 239:
+#line 2250 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (5)].TypeVal))->getDescription());
@@ -5222,8 +5310,8 @@
   ;}
     break;
 
-  case 238:
-#line 2217 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 240:
+#line 2260 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
@@ -5236,16 +5324,16 @@
   ;}
     break;
 
-  case 239:
-#line 2228 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 241:
+#line 2271 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ArgList) = (yyvsp[(1) - (1)].ArgList);
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 240:
-#line 2232 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 242:
+#line 2275 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ArgList) = (yyvsp[(1) - (3)].ArgList);
     struct ArgListEntry E;
@@ -5257,8 +5345,8 @@
   ;}
     break;
 
-  case 241:
-#line 2241 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 243:
+#line 2284 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ArgList) = new ArgListType;
     struct ArgListEntry E;
@@ -5270,16 +5358,16 @@
   ;}
     break;
 
-  case 242:
-#line 2250 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 244:
+#line 2293 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ArgList) = 0;
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 243:
-#line 2256 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 245:
+#line 2299 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   std::string FunctionName(*(yyvsp[(3) - (10)].StrVal));
   delete (yyvsp[(3) - (10)].StrVal);  // Free strdup'd memory!
@@ -5409,8 +5497,8 @@
 ;}
     break;
 
-  case 246:
-#line 2386 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 248:
+#line 2429 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.FunctionVal) = CurFun.CurrentFunction;
 
@@ -5421,16 +5509,16 @@
 ;}
     break;
 
-  case 249:
-#line 2397 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 251:
+#line 2440 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
   CHECK_FOR_ERROR
 ;}
     break;
 
-  case 250:
-#line 2402 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 252:
+#line 2445 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurFun.CurrentFunction->setLinkage((yyvsp[(1) - (3)].Linkage));
     CurFun.CurrentFunction->setVisibility((yyvsp[(2) - (3)].Visibility));
@@ -5440,88 +5528,88 @@
   ;}
     break;
 
-  case 251:
-#line 2414 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 253:
+#line 2457 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 252:
-#line 2418 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 254:
+#line 2461 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 253:
-#line 2423 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 255:
+#line 2466 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {    // A reference to a direct constant
     (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].SInt64Val));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 254:
-#line 2427 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 256:
+#line 2470 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].UInt64Val));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 255:
-#line 2431 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 257:
+#line 2474 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {                     // Perhaps it's an FP constant?
     (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].FPVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 256:
-#line 2435 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 258:
+#line 2478 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create(ConstantInt::getTrue());
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 257:
-#line 2439 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 259:
+#line 2482 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create(ConstantInt::getFalse());
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 258:
-#line 2443 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 260:
+#line 2486 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::createNull();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 259:
-#line 2447 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 261:
+#line 2490 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::createUndef();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 260:
-#line 2451 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 262:
+#line 2494 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {     // A vector zero constant.
     (yyval.ValIDVal) = ValID::createZeroInit();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 261:
-#line 2455 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 263:
+#line 2498 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { // Nonempty unsized packed vector
     const Type *ETy = (*(yyvsp[(2) - (3)].ConstVector))[0]->getType();
     int NumElements = (yyvsp[(2) - (3)].ConstVector)->size(); 
@@ -5549,16 +5637,16 @@
   ;}
     break;
 
-  case 262:
-#line 2480 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 264:
+#line 2523 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].ConstVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 263:
-#line 2484 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 265:
+#line 2527 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::createInlineAsm(*(yyvsp[(3) - (5)].StrVal), *(yyvsp[(5) - (5)].StrVal), (yyvsp[(2) - (5)].BoolVal));
     delete (yyvsp[(3) - (5)].StrVal);
@@ -5567,24 +5655,24 @@
   ;}
     break;
 
-  case 264:
-#line 2494 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 266:
+#line 2537 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {  // Is it an integer reference...?
     (yyval.ValIDVal) = ValID::createLocalID((yyvsp[(1) - (1)].UIntVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 265:
-#line 2498 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 267:
+#line 2541 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::createGlobalID((yyvsp[(1) - (1)].UIntVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 266:
-#line 2502 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 268:
+#line 2545 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {                   // Is it a named reference...?
     (yyval.ValIDVal) = ValID::createLocalName(*(yyvsp[(1) - (1)].StrVal));
     delete (yyvsp[(1) - (1)].StrVal);
@@ -5592,8 +5680,8 @@
   ;}
     break;
 
-  case 267:
-#line 2507 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 269:
+#line 2550 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {                   // Is it a named reference...?
     (yyval.ValIDVal) = ValID::createGlobalName(*(yyvsp[(1) - (1)].StrVal));
     delete (yyvsp[(1) - (1)].StrVal);
@@ -5601,8 +5689,8 @@
   ;}
     break;
 
-  case 270:
-#line 2520 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 272:
+#line 2563 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -5612,8 +5700,8 @@
   ;}
     break;
 
-  case 271:
-#line 2529 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 273:
+#line 2572 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValueList) = new std::vector<Value *>();
     (yyval.ValueList)->push_back((yyvsp[(1) - (1)].ValueVal)); 
@@ -5621,32 +5709,32 @@
   ;}
     break;
 
-  case 272:
-#line 2534 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 274:
+#line 2577 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     ((yyval.ValueList)=(yyvsp[(1) - (3)].ValueList))->push_back((yyvsp[(3) - (3)].ValueVal)); 
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 273:
-#line 2539 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 275:
+#line 2582 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 274:
-#line 2543 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 276:
+#line 2586 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { // Do not allow functions with 0 basic blocks   
     (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 275:
-#line 2552 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 277:
+#line 2595 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     setValueName((yyvsp[(3) - (3)].TermInstVal), (yyvsp[(2) - (3)].StrVal));
     CHECK_FOR_ERROR
@@ -5657,8 +5745,8 @@
   ;}
     break;
 
-  case 276:
-#line 2561 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 278:
+#line 2604 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (CastInst *CI1 = dyn_cast<CastInst>((yyvsp[(2) - (2)].InstVal)))
       if (CastInst *CI2 = dyn_cast<CastInst>(CI1->getOperand(0)))
@@ -5670,16 +5758,16 @@
   ;}
     break;
 
-  case 277:
-#line 2570 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 279:
+#line 2613 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {          // Empty space between instruction lists
     (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalID(CurFun.NextValNum));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 278:
-#line 2574 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 280:
+#line 2617 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {             // Labelled (named) basic block
     (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalName(*(yyvsp[(1) - (1)].StrVal)));
     delete (yyvsp[(1) - (1)].StrVal);
@@ -5688,8 +5776,8 @@
   ;}
     break;
 
-  case 279:
-#line 2582 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 281:
+#line 2625 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { // Return with a result...
     ValueList &VL = *(yyvsp[(2) - (2)].ValueList);
     assert(!VL.empty() && "Invalid ret operands!");
@@ -5699,16 +5787,16 @@
   ;}
     break;
 
-  case 280:
-#line 2589 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 282:
+#line 2632 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {                                    // Return with no result...
     (yyval.TermInstVal) = ReturnInst::Create();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 281:
-#line 2593 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 283:
+#line 2636 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {                           // Unconditional Branch...
     BasicBlock* tmpBB = getBBVal((yyvsp[(3) - (3)].ValIDVal));
     CHECK_FOR_ERROR
@@ -5716,8 +5804,8 @@
   ;}
     break;
 
-  case 282:
-#line 2598 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 284:
+#line 2641 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {  
     assert(cast<IntegerType>((yyvsp[(2) - (9)].PrimType))->getBitWidth() == 1 && "Not Bool?");
     BasicBlock* tmpBBA = getBBVal((yyvsp[(6) - (9)].ValIDVal));
@@ -5730,8 +5818,8 @@
   ;}
     break;
 
-  case 283:
-#line 2608 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 285:
+#line 2651 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     Value* tmpVal = getVal((yyvsp[(2) - (9)].PrimType), (yyvsp[(3) - (9)].ValIDVal));
     CHECK_FOR_ERROR
@@ -5753,8 +5841,8 @@
   ;}
     break;
 
-  case 284:
-#line 2627 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 286:
+#line 2670 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     Value* tmpVal = getVal((yyvsp[(2) - (8)].PrimType), (yyvsp[(3) - (8)].ValIDVal));
     CHECK_FOR_ERROR
@@ -5766,8 +5854,8 @@
   ;}
     break;
 
-  case 285:
-#line 2637 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 287:
+#line 2680 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
 
     // Handle the short syntax
@@ -5855,24 +5943,24 @@
   ;}
     break;
 
-  case 286:
-#line 2722 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 288:
+#line 2765 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TermInstVal) = new UnwindInst();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 287:
-#line 2726 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 289:
+#line 2769 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TermInstVal) = new UnreachableInst();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 288:
-#line 2733 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 290:
+#line 2776 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.JumpTable) = (yyvsp[(1) - (6)].JumpTable);
     Constant *V = cast<Constant>(getExistingVal((yyvsp[(2) - (6)].PrimType), (yyvsp[(3) - (6)].ValIDVal)));
@@ -5886,8 +5974,8 @@
   ;}
     break;
 
-  case 289:
-#line 2744 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 291:
+#line 2787 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.JumpTable) = new std::vector<std::pair<Constant*, BasicBlock*> >();
     Constant *V = cast<Constant>(getExistingVal((yyvsp[(1) - (5)].PrimType), (yyvsp[(2) - (5)].ValIDVal)));
@@ -5902,8 +5990,8 @@
   ;}
     break;
 
-  case 290:
-#line 2757 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 292:
+#line 2800 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // Is this definition named?? if so, assign the name...
     setValueName((yyvsp[(2) - (2)].InstVal), (yyvsp[(1) - (2)].StrVal));
@@ -5914,8 +6002,8 @@
   ;}
     break;
 
-  case 291:
-#line 2767 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 293:
+#line 2810 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {    // Used for PHI nodes
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (6)].TypeVal))->getDescription());
@@ -5929,8 +6017,8 @@
   ;}
     break;
 
-  case 292:
-#line 2778 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 294:
+#line 2821 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.PHIList) = (yyvsp[(1) - (7)].PHIList);
     Value* tmpVal = getVal((yyvsp[(1) - (7)].PHIList)->front().first->getType(), (yyvsp[(4) - (7)].ValIDVal));
@@ -5941,8 +6029,8 @@
   ;}
     break;
 
-  case 293:
-#line 2788 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 295:
+#line 2831 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0
     if (!UpRefs.empty())
@@ -5956,8 +6044,8 @@
   ;}
     break;
 
-  case 294:
-#line 2799 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 296:
+#line 2842 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0
     // Labels are only valid in ASMs
@@ -5968,8 +6056,8 @@
   ;}
     break;
 
-  case 295:
-#line 2807 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 297:
+#line 2850 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0
     if (!UpRefs.empty())
@@ -5982,8 +6070,8 @@
   ;}
     break;
 
-  case 296:
-#line 2817 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 298:
+#line 2860 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0
     (yyval.ParamList) = (yyvsp[(1) - (6)].ParamList);
@@ -5993,18 +6081,18 @@
   ;}
     break;
 
-  case 297:
-#line 2824 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 299:
+#line 2867 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamList) = new ParamList(); ;}
     break;
 
-  case 298:
-#line 2827 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 300:
+#line 2870 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ValueList) = new std::vector<Value*>(); ;}
     break;
 
-  case 299:
-#line 2828 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 301:
+#line 2871 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValueList) = (yyvsp[(1) - (3)].ValueList);
     (yyval.ValueList)->push_back((yyvsp[(3) - (3)].ValueVal));
@@ -6012,24 +6100,24 @@
   ;}
     break;
 
-  case 300:
-#line 2835 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 302:
+#line 2878 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 301:
-#line 2839 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 303:
+#line 2882 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 302:
-#line 2844 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 304:
+#line 2887 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (5)].TypeVal))->getDescription());
@@ -6041,15 +6129,15 @@
     CHECK_FOR_ERROR
     Value* val2 = getVal(*(yyvsp[(2) - (5)].TypeVal), (yyvsp[(5) - (5)].ValIDVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = BinaryOperator::create((yyvsp[(1) - (5)].BinaryOpVal), val1, val2);
+    (yyval.InstVal) = BinaryOperator::Create((yyvsp[(1) - (5)].BinaryOpVal), val1, val2);
     if ((yyval.InstVal) == 0)
       GEN_ERROR("binary operator returned null");
     delete (yyvsp[(2) - (5)].TypeVal);
   ;}
     break;
 
-  case 303:
-#line 2860 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 305:
+#line 2903 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (5)].TypeVal))->getDescription());
@@ -6062,15 +6150,15 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*(yyvsp[(2) - (5)].TypeVal), (yyvsp[(5) - (5)].ValIDVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = BinaryOperator::create((yyvsp[(1) - (5)].BinaryOpVal), tmpVal1, tmpVal2);
+    (yyval.InstVal) = BinaryOperator::Create((yyvsp[(1) - (5)].BinaryOpVal), tmpVal1, tmpVal2);
     if ((yyval.InstVal) == 0)
       GEN_ERROR("binary operator returned null");
     delete (yyvsp[(2) - (5)].TypeVal);
   ;}
     break;
 
-  case 304:
-#line 2877 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 306:
+#line 2920 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
@@ -6080,15 +6168,15 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(6) - (6)].ValIDVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = CmpInst::create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].IPredicate), tmpVal1, tmpVal2);
+    (yyval.InstVal) = CmpInst::Create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].IPredicate), tmpVal1, tmpVal2);
     if ((yyval.InstVal) == 0)
       GEN_ERROR("icmp operator returned null");
     delete (yyvsp[(3) - (6)].TypeVal);
   ;}
     break;
 
-  case 305:
-#line 2891 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 307:
+#line 2934 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
@@ -6098,15 +6186,15 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(6) - (6)].ValIDVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = CmpInst::create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].FPredicate), tmpVal1, tmpVal2);
+    (yyval.InstVal) = CmpInst::Create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].FPredicate), tmpVal1, tmpVal2);
     if ((yyval.InstVal) == 0)
       GEN_ERROR("fcmp operator returned null");
     delete (yyvsp[(3) - (6)].TypeVal);
   ;}
     break;
 
-  case 306:
-#line 2905 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 308:
+#line 2948 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
@@ -6116,15 +6204,15 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(6) - (6)].ValIDVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = CmpInst::create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].IPredicate), tmpVal1, tmpVal2);
+    (yyval.InstVal) = CmpInst::Create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].IPredicate), tmpVal1, tmpVal2);
     if ((yyval.InstVal) == 0)
       GEN_ERROR("icmp operator returned null");
     delete (yyvsp[(3) - (6)].TypeVal);
   ;}
     break;
 
-  case 307:
-#line 2919 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 309:
+#line 2962 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
@@ -6134,15 +6222,15 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(6) - (6)].ValIDVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = CmpInst::create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].FPredicate), tmpVal1, tmpVal2);
+    (yyval.InstVal) = CmpInst::Create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].FPredicate), tmpVal1, tmpVal2);
     if ((yyval.InstVal) == 0)
       GEN_ERROR("fcmp operator returned null");
     delete (yyvsp[(3) - (6)].TypeVal);
   ;}
     break;
 
-  case 308:
-#line 2933 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 310:
+#line 2976 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(4) - (4)].TypeVal))->getDescription());
@@ -6152,13 +6240,13 @@
       GEN_ERROR("invalid cast opcode for cast from '" +
                 Val->getType()->getDescription() + "' to '" +
                 DestTy->getDescription() + "'"); 
-    (yyval.InstVal) = CastInst::create((yyvsp[(1) - (4)].CastOpVal), Val, DestTy);
+    (yyval.InstVal) = CastInst::Create((yyvsp[(1) - (4)].CastOpVal), Val, DestTy);
     delete (yyvsp[(4) - (4)].TypeVal);
   ;}
     break;
 
-  case 309:
-#line 2945 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 311:
+#line 2988 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(2) - (6)].ValueVal)->getType() != Type::Int1Ty)
       GEN_ERROR("select condition must be boolean");
@@ -6169,8 +6257,8 @@
   ;}
     break;
 
-  case 310:
-#line 2953 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 312:
+#line 2996 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(4) - (4)].TypeVal))->getDescription());
@@ -6180,8 +6268,8 @@
   ;}
     break;
 
-  case 311:
-#line 2960 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 313:
+#line 3003 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!ExtractElementInst::isValidOperands((yyvsp[(2) - (4)].ValueVal), (yyvsp[(4) - (4)].ValueVal)))
       GEN_ERROR("Invalid extractelement operands");
@@ -6190,8 +6278,8 @@
   ;}
     break;
 
-  case 312:
-#line 2966 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 314:
+#line 3009 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!InsertElementInst::isValidOperands((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal)))
       GEN_ERROR("Invalid insertelement operands");
@@ -6200,8 +6288,8 @@
   ;}
     break;
 
-  case 313:
-#line 2972 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 315:
+#line 3015 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!ShuffleVectorInst::isValidOperands((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal)))
       GEN_ERROR("Invalid shufflevector operands");
@@ -6210,8 +6298,8 @@
   ;}
     break;
 
-  case 314:
-#line 2978 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 316:
+#line 3021 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     const Type *Ty = (yyvsp[(2) - (2)].PHIList)->front().first->getType();
     if (!Ty->isFirstClassType())
@@ -6229,8 +6317,8 @@
   ;}
     break;
 
-  case 315:
-#line 2994 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 317:
+#line 3037 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
 
     // Handle the short syntax
@@ -6322,32 +6410,32 @@
   ;}
     break;
 
-  case 316:
-#line 3083 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 318:
+#line 3126 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.InstVal) = (yyvsp[(1) - (1)].InstVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 317:
-#line 3088 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 319:
+#line 3131 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 318:
-#line 3092 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 320:
+#line 3135 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 319:
-#line 3099 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 321:
+#line 3142 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (3)].TypeVal))->getDescription());
@@ -6357,8 +6445,8 @@
   ;}
     break;
 
-  case 320:
-#line 3106 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 322:
+#line 3149 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (6)].TypeVal))->getDescription());
@@ -6369,8 +6457,8 @@
   ;}
     break;
 
-  case 321:
-#line 3114 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 323:
+#line 3157 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (3)].TypeVal))->getDescription());
@@ -6380,8 +6468,8 @@
   ;}
     break;
 
-  case 322:
-#line 3121 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 324:
+#line 3164 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (6)].TypeVal))->getDescription());
@@ -6392,8 +6480,8 @@
   ;}
     break;
 
-  case 323:
-#line 3129 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 325:
+#line 3172 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!isa<PointerType>((yyvsp[(2) - (2)].ValueVal)->getType()))
       GEN_ERROR("Trying to free nonpointer type " + 
@@ -6403,8 +6491,8 @@
   ;}
     break;
 
-  case 324:
-#line 3137 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 326:
+#line 3180 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (5)].TypeVal))->getDescription());
@@ -6421,8 +6509,8 @@
   ;}
     break;
 
-  case 325:
-#line 3151 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 327:
+#line 3194 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(5) - (7)].TypeVal))->getDescription());
@@ -6442,8 +6530,8 @@
   ;}
     break;
 
-  case 326:
-#line 3168 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 328:
+#line 3211 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   Value *TmpVal = getVal((yyvsp[(2) - (5)].TypeVal)->get(), (yyvsp[(3) - (5)].ValIDVal));
   if (!GetResultInst::isValidOperands(TmpVal, (yyvsp[(5) - (5)].UInt64Val)))
@@ -6454,8 +6542,8 @@
   ;}
     break;
 
-  case 327:
-#line 3176 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 329:
+#line 3219 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (4)].TypeVal))->getDescription());
@@ -6473,9 +6561,49 @@
   ;}
     break;
 
+  case 330:
+#line 3234 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+    {
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (4)].TypeVal))->getDescription());
+    if (!isa<StructType>((yyvsp[(2) - (4)].TypeVal)->get()) && !isa<ArrayType>((yyvsp[(2) - (4)].TypeVal)->get()))
+      GEN_ERROR("extractvalue insn requires an aggregate operand");
+
+    if (!ExtractValueInst::getIndexedType(*(yyvsp[(2) - (4)].TypeVal), (yyvsp[(4) - (4)].ValueList)->begin(), (yyvsp[(4) - (4)].ValueList)->end()))
+      GEN_ERROR("Invalid extractvalue indices for type '" +
+                     (*(yyvsp[(2) - (4)].TypeVal))->getDescription()+ "'");
+    Value* tmpVal = getVal(*(yyvsp[(2) - (4)].TypeVal), (yyvsp[(3) - (4)].ValIDVal));
+    CHECK_FOR_ERROR
+    (yyval.InstVal) = ExtractValueInst::Create(tmpVal, (yyvsp[(4) - (4)].ValueList)->begin(), (yyvsp[(4) - (4)].ValueList)->end());
+    delete (yyvsp[(2) - (4)].TypeVal); 
+    delete (yyvsp[(4) - (4)].ValueList);
+  ;}
+    break;
+
+  case 331:
+#line 3249 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+    {
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (7)].TypeVal))->getDescription());
+    if (!isa<StructType>((yyvsp[(2) - (7)].TypeVal)->get()) && !isa<ArrayType>((yyvsp[(2) - (7)].TypeVal)->get()))
+      GEN_ERROR("extractvalue insn requires an aggregate operand");
+
+    if (ExtractValueInst::getIndexedType(*(yyvsp[(2) - (7)].TypeVal), (yyvsp[(7) - (7)].ValueList)->begin(), (yyvsp[(7) - (7)].ValueList)->end()) != (yyvsp[(5) - (7)].TypeVal)->get())
+      GEN_ERROR("Invalid insertvalue indices for type '" +
+                     (*(yyvsp[(2) - (7)].TypeVal))->getDescription()+ "'");
+    Value* aggVal = getVal(*(yyvsp[(2) - (7)].TypeVal), (yyvsp[(3) - (7)].ValIDVal));
+    Value* tmpVal = getVal(*(yyvsp[(5) - (7)].TypeVal), (yyvsp[(6) - (7)].ValIDVal));
+    CHECK_FOR_ERROR
+    (yyval.InstVal) = InsertValueInst::Create(aggVal, tmpVal, (yyvsp[(7) - (7)].ValueList)->begin(), (yyvsp[(7) - (7)].ValueList)->end());
+    delete (yyvsp[(2) - (7)].TypeVal); 
+    delete (yyvsp[(5) - (7)].TypeVal);
+    delete (yyvsp[(7) - (7)].ValueList);
+  ;}
+    break;
+
 
 /* Line 1267 of yacc.c.  */
-#line 6479 "llvmAsmParser.tab.c"
+#line 6607 "llvmAsmParser.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -6689,7 +6817,7 @@
 }
 
 
-#line 3193 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3268 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
 
 
 // common code from the two 'RunVMAsmParser' functions

Modified: llvm/trunk/lib/AsmParser/llvmAsmParser.h.cvs
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/llvmAsmParser.h.cvs?rev=51468&r1=51467&r2=51468&view=diff

==============================================================================
--- llvm/trunk/lib/AsmParser/llvmAsmParser.h.cvs (original)
+++ llvm/trunk/lib/AsmParser/llvmAsmParser.h.cvs Thu May 22 20:55:30 2008
@@ -175,21 +175,23 @@
      INSERTELEMENT = 391,
      SHUFFLEVECTOR = 392,
      GETRESULT = 393,
-     SIGNEXT = 394,
-     ZEROEXT = 395,
-     NORETURN = 396,
-     INREG = 397,
-     SRET = 398,
-     NOUNWIND = 399,
-     NOALIAS = 400,
-     BYVAL = 401,
-     NEST = 402,
-     READNONE = 403,
-     READONLY = 404,
-     GC = 405,
-     DEFAULT = 406,
-     HIDDEN = 407,
-     PROTECTED = 408
+     EXTRACTVALUE = 394,
+     INSERTVALUE = 395,
+     SIGNEXT = 396,
+     ZEROEXT = 397,
+     NORETURN = 398,
+     INREG = 399,
+     SRET = 400,
+     NOUNWIND = 401,
+     NOALIAS = 402,
+     BYVAL = 403,
+     NEST = 404,
+     READNONE = 405,
+     READONLY = 406,
+     GC = 407,
+     DEFAULT = 408,
+     HIDDEN = 409,
+     PROTECTED = 410
    };
 #endif
 /* Tokens.  */
@@ -329,28 +331,30 @@
 #define INSERTELEMENT 391
 #define SHUFFLEVECTOR 392
 #define GETRESULT 393
-#define SIGNEXT 394
-#define ZEROEXT 395
-#define NORETURN 396
-#define INREG 397
-#define SRET 398
-#define NOUNWIND 399
-#define NOALIAS 400
-#define BYVAL 401
-#define NEST 402
-#define READNONE 403
-#define READONLY 404
-#define GC 405
-#define DEFAULT 406
-#define HIDDEN 407
-#define PROTECTED 408
+#define EXTRACTVALUE 394
+#define INSERTVALUE 395
+#define SIGNEXT 396
+#define ZEROEXT 397
+#define NORETURN 398
+#define INREG 399
+#define SRET 400
+#define NOUNWIND 401
+#define NOALIAS 402
+#define BYVAL 403
+#define NEST 404
+#define READNONE 405
+#define READONLY 406
+#define GC 407
+#define DEFAULT 408
+#define HIDDEN 409
+#define PROTECTED 410
 
 
 
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 949 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 949 "/Users/gohman/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
 {
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
@@ -398,7 +402,7 @@
   llvm::FCmpInst::Predicate         FPredicate;
 }
 /* Line 1529 of yacc.c.  */
-#line 402 "llvmAsmParser.tab.h"
+#line 406 "llvmAsmParser.tab.h"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1

Modified: llvm/trunk/lib/AsmParser/llvmAsmParser.y
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/llvmAsmParser.y?rev=51468&r1=51467&r2=51468&view=diff

==============================================================================
--- llvm/trunk/lib/AsmParser/llvmAsmParser.y (original)
+++ llvm/trunk/lib/AsmParser/llvmAsmParser.y Thu May 22 20:55:30 2008
@@ -475,7 +475,7 @@
   if (TriggerError) return 0;
 
   if (!Ty->isFirstClassType() && !isa<OpaqueType>(Ty)) {
-    GenerateError("Invalid use of a composite type");
+    GenerateError("Invalid use of a non-first-class type");
     return 0;
   }
 
@@ -1093,6 +1093,7 @@
 %token <OtherOpVal> PHI_TOK SELECT VAARG
 %token <OtherOpVal> EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR
 %token <OtherOpVal> GETRESULT
+%token <OtherOpVal> EXTRACTVALUE INSERTVALUE
 
 // Function Attributes
 %token SIGNEXT ZEROEXT NORETURN INREG SRET NOUNWIND NOALIAS BYVAL NEST
@@ -1966,6 +1967,48 @@
       GEN_ERROR("Invalid shufflevector operands");
     $$ = ConstantExpr::getShuffleVector($3, $5, $7);
     CHECK_FOR_ERROR
+  }
+  | EXTRACTVALUE '(' ConstVal IndexList ')' {
+    if (!isa<StructType>($3->getType()) && !isa<ArrayType>($3->getType()))
+      GEN_ERROR("ExtractValue requires an aggregate operand");
+
+    const Type *IdxTy =
+      ExtractValueInst::getIndexedType($3->getType(), $4->begin(), $4->end());
+    if (!IdxTy)
+      GEN_ERROR("Index list invalid for constant extractvalue");
+
+    SmallVector<Constant*, 8> IdxVec;
+    for (unsigned i = 0, e = $4->size(); i != e; ++i)
+      if (Constant *C = dyn_cast<Constant>((*$4)[i]))
+        IdxVec.push_back(C);
+      else
+        GEN_ERROR("Indices to constant extractvalue must be constants");
+
+    delete $4;
+
+    $$ = ConstantExpr::getExtractValue($3, &IdxVec[0], IdxVec.size());
+    CHECK_FOR_ERROR
+  }
+  | INSERTVALUE '(' ConstVal ',' ConstVal IndexList ')' {
+    if (!isa<StructType>($3->getType()) && !isa<ArrayType>($3->getType()))
+      GEN_ERROR("InsertValue requires an aggregate operand");
+
+    const Type *IdxTy =
+      ExtractValueInst::getIndexedType($3->getType(), $6->begin(), $6->end());
+    if (IdxTy != $5->getType())
+      GEN_ERROR("Index list invalid for constant insertvalue");
+
+    SmallVector<Constant*, 8> IdxVec;
+    for (unsigned i = 0, e = $6->size(); i != e; ++i)
+      if (Constant *C = dyn_cast<Constant>((*$6)[i]))
+        IdxVec.push_back(C);
+      else
+        GEN_ERROR("Indices to constant insertvalue must be constants");
+
+    delete $6;
+
+    $$ = ConstantExpr::getInsertValue($3, $5, &IdxVec[0], IdxVec.size());
+    CHECK_FOR_ERROR
   };
 
 
@@ -3165,7 +3208,7 @@
     $$ = new StoreInst($3, tmpVal, $1, $7);
     delete $5;
   }
-| GETRESULT Types ValueRef ',' EUINT64VAL  {
+  | GETRESULT Types ValueRef ',' EUINT64VAL  {
   Value *TmpVal = getVal($2->get(), $3);
   if (!GetResultInst::isValidOperands(TmpVal, $5))
       GEN_ERROR("Invalid getresult operands");
@@ -3187,6 +3230,38 @@
     $$ = GetElementPtrInst::Create(tmpVal, $4->begin(), $4->end());
     delete $2; 
     delete $4;
+  }
+  | EXTRACTVALUE Types ValueRef IndexList {
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription());
+    if (!isa<StructType>($2->get()) && !isa<ArrayType>($2->get()))
+      GEN_ERROR("extractvalue insn requires an aggregate operand");
+
+    if (!ExtractValueInst::getIndexedType(*$2, $4->begin(), $4->end()))
+      GEN_ERROR("Invalid extractvalue indices for type '" +
+                     (*$2)->getDescription()+ "'");
+    Value* tmpVal = getVal(*$2, $3);
+    CHECK_FOR_ERROR
+    $$ = ExtractValueInst::Create(tmpVal, $4->begin(), $4->end());
+    delete $2; 
+    delete $4;
+  }
+  | INSERTVALUE Types ValueRef ',' Types ValueRef IndexList {
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription());
+    if (!isa<StructType>($2->get()) && !isa<ArrayType>($2->get()))
+      GEN_ERROR("extractvalue insn requires an aggregate operand");
+
+    if (ExtractValueInst::getIndexedType(*$2, $7->begin(), $7->end()) != $5->get())
+      GEN_ERROR("Invalid insertvalue indices for type '" +
+                     (*$2)->getDescription()+ "'");
+    Value* aggVal = getVal(*$2, $3);
+    Value* tmpVal = getVal(*$5, $6);
+    CHECK_FOR_ERROR
+    $$ = InsertValueInst::Create(aggVal, tmpVal, $7->begin(), $7->end());
+    delete $2; 
+    delete $5;
+    delete $7;
   };
 
 

Modified: llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs?rev=51468&r1=51467&r2=51468&view=diff

==============================================================================
--- llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs (original)
+++ llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs Thu May 22 20:55:30 2008
@@ -475,7 +475,7 @@
   if (TriggerError) return 0;
 
   if (!Ty->isFirstClassType() && !isa<OpaqueType>(Ty)) {
-    GenerateError("Invalid use of a composite type");
+    GenerateError("Invalid use of a non-first-class type");
     return 0;
   }
 
@@ -1093,6 +1093,7 @@
 %token <OtherOpVal> PHI_TOK SELECT VAARG
 %token <OtherOpVal> EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR
 %token <OtherOpVal> GETRESULT
+%token <OtherOpVal> EXTRACTVALUE INSERTVALUE
 
 // Function Attributes
 %token SIGNEXT ZEROEXT NORETURN INREG SRET NOUNWIND NOALIAS BYVAL NEST
@@ -1966,6 +1967,48 @@
       GEN_ERROR("Invalid shufflevector operands");
     $$ = ConstantExpr::getShuffleVector($3, $5, $7);
     CHECK_FOR_ERROR
+  }
+  | EXTRACTVALUE '(' ConstVal IndexList ')' {
+    if (!isa<StructType>($3->getType()) && !isa<ArrayType>($3->getType()))
+      GEN_ERROR("ExtractValue requires an aggregate operand");
+
+    const Type *IdxTy =
+      ExtractValueInst::getIndexedType($3->getType(), $4->begin(), $4->end());
+    if (!IdxTy)
+      GEN_ERROR("Index list invalid for constant extractvalue");
+
+    SmallVector<Constant*, 8> IdxVec;
+    for (unsigned i = 0, e = $4->size(); i != e; ++i)
+      if (Constant *C = dyn_cast<Constant>((*$4)[i]))
+        IdxVec.push_back(C);
+      else
+        GEN_ERROR("Indices to constant extractvalue must be constants");
+
+    delete $4;
+
+    $$ = ConstantExpr::getExtractValue($3, &IdxVec[0], IdxVec.size());
+    CHECK_FOR_ERROR
+  }
+  | INSERTVALUE '(' ConstVal ',' ConstVal IndexList ')' {
+    if (!isa<StructType>($3->getType()) && !isa<ArrayType>($3->getType()))
+      GEN_ERROR("InsertValue requires an aggregate operand");
+
+    const Type *IdxTy =
+      ExtractValueInst::getIndexedType($3->getType(), $6->begin(), $6->end());
+    if (IdxTy != $5->getType())
+      GEN_ERROR("Index list invalid for constant insertvalue");
+
+    SmallVector<Constant*, 8> IdxVec;
+    for (unsigned i = 0, e = $6->size(); i != e; ++i)
+      if (Constant *C = dyn_cast<Constant>((*$6)[i]))
+        IdxVec.push_back(C);
+      else
+        GEN_ERROR("Indices to constant insertvalue must be constants");
+
+    delete $6;
+
+    $$ = ConstantExpr::getInsertValue($3, $5, &IdxVec[0], IdxVec.size());
+    CHECK_FOR_ERROR
   };
 
 
@@ -2852,7 +2895,7 @@
     CHECK_FOR_ERROR
     Value* val2 = getVal(*$2, $5);
     CHECK_FOR_ERROR
-    $$ = BinaryOperator::create($1, val1, val2);
+    $$ = BinaryOperator::Create($1, val1, val2);
     if ($$ == 0)
       GEN_ERROR("binary operator returned null");
     delete $2;
@@ -2869,7 +2912,7 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*$2, $5);
     CHECK_FOR_ERROR
-    $$ = BinaryOperator::create($1, tmpVal1, tmpVal2);
+    $$ = BinaryOperator::Create($1, tmpVal1, tmpVal2);
     if ($$ == 0)
       GEN_ERROR("binary operator returned null");
     delete $2;
@@ -2883,7 +2926,7 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*$3, $6);
     CHECK_FOR_ERROR
-    $$ = CmpInst::create($1, $2, tmpVal1, tmpVal2);
+    $$ = CmpInst::Create($1, $2, tmpVal1, tmpVal2);
     if ($$ == 0)
       GEN_ERROR("icmp operator returned null");
     delete $3;
@@ -2897,7 +2940,7 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*$3, $6);
     CHECK_FOR_ERROR
-    $$ = CmpInst::create($1, $2, tmpVal1, tmpVal2);
+    $$ = CmpInst::Create($1, $2, tmpVal1, tmpVal2);
     if ($$ == 0)
       GEN_ERROR("fcmp operator returned null");
     delete $3;
@@ -2911,7 +2954,7 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*$3, $6);
     CHECK_FOR_ERROR
-    $$ = CmpInst::create($1, $2, tmpVal1, tmpVal2);
+    $$ = CmpInst::Create($1, $2, tmpVal1, tmpVal2);
     if ($$ == 0)
       GEN_ERROR("icmp operator returned null");
     delete $3;
@@ -2925,7 +2968,7 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*$3, $6);
     CHECK_FOR_ERROR
-    $$ = CmpInst::create($1, $2, tmpVal1, tmpVal2);
+    $$ = CmpInst::Create($1, $2, tmpVal1, tmpVal2);
     if ($$ == 0)
       GEN_ERROR("fcmp operator returned null");
     delete $3;
@@ -2939,7 +2982,7 @@
       GEN_ERROR("invalid cast opcode for cast from '" +
                 Val->getType()->getDescription() + "' to '" +
                 DestTy->getDescription() + "'"); 
-    $$ = CastInst::create($1, Val, DestTy);
+    $$ = CastInst::Create($1, Val, DestTy);
     delete $4;
   }
   | SELECT ResolvedVal ',' ResolvedVal ',' ResolvedVal {
@@ -3165,7 +3208,7 @@
     $$ = new StoreInst($3, tmpVal, $1, $7);
     delete $5;
   }
-| GETRESULT Types ValueRef ',' EUINT64VAL  {
+  | GETRESULT Types ValueRef ',' EUINT64VAL  {
   Value *TmpVal = getVal($2->get(), $3);
   if (!GetResultInst::isValidOperands(TmpVal, $5))
       GEN_ERROR("Invalid getresult operands");
@@ -3187,6 +3230,38 @@
     $$ = GetElementPtrInst::Create(tmpVal, $4->begin(), $4->end());
     delete $2; 
     delete $4;
+  }
+  | EXTRACTVALUE Types ValueRef IndexList {
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription());
+    if (!isa<StructType>($2->get()) && !isa<ArrayType>($2->get()))
+      GEN_ERROR("extractvalue insn requires an aggregate operand");
+
+    if (!ExtractValueInst::getIndexedType(*$2, $4->begin(), $4->end()))
+      GEN_ERROR("Invalid extractvalue indices for type '" +
+                     (*$2)->getDescription()+ "'");
+    Value* tmpVal = getVal(*$2, $3);
+    CHECK_FOR_ERROR
+    $$ = ExtractValueInst::Create(tmpVal, $4->begin(), $4->end());
+    delete $2; 
+    delete $4;
+  }
+  | INSERTVALUE Types ValueRef ',' Types ValueRef IndexList {
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription());
+    if (!isa<StructType>($2->get()) && !isa<ArrayType>($2->get()))
+      GEN_ERROR("extractvalue insn requires an aggregate operand");
+
+    if (ExtractValueInst::getIndexedType(*$2, $7->begin(), $7->end()) != $5->get())
+      GEN_ERROR("Invalid insertvalue indices for type '" +
+                     (*$2)->getDescription()+ "'");
+    Value* aggVal = getVal(*$2, $3);
+    Value* tmpVal = getVal(*$5, $6);
+    CHECK_FOR_ERROR
+    $$ = InsertValueInst::Create(aggVal, tmpVal, $7->begin(), $7->end());
+    delete $2; 
+    delete $5;
+    delete $7;
   };
 
 

Modified: llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp?rev=51468&r1=51467&r2=51468&view=diff

==============================================================================
--- llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp (original)
+++ llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp Thu May 22 20:55:30 2008
@@ -770,6 +770,29 @@
       V = ConstantExpr::getGetElementPtr(Elts[0], &Elts[1], Elts.size()-1);
       break;
     }
+    case bitc::CST_CODE_CE_EXTRACTVAL: { // CE_EXTRACTVAL: [n x operands]
+      if (Record.size() & 1) return Error("Invalid CE_EXTRACTVAL record");
+      SmallVector<Constant*, 16> Elts;
+      for (unsigned i = 0, e = Record.size(); i != e; i += 2) {
+        const Type *ElTy = getTypeByID(Record[i]);
+        if (!ElTy) return Error("Invalid CE_EXTRACTVAL record");
+        Elts.push_back(ValueList.getConstantFwdRef(Record[i+1], ElTy));
+      }
+      V = ConstantExpr::getExtractValue(Elts[0], &Elts[1], Elts.size()-1);
+      break;
+    }
+    case bitc::CST_CODE_CE_INSERTVAL: { // CE_INSERTVAL: [n x operands]
+      if (Record.size() & 1) return Error("Invalid CE_INSERTVAL record");
+      SmallVector<Constant*, 16> Elts;
+      for (unsigned i = 0, e = Record.size(); i != e; i += 2) {
+        const Type *ElTy = getTypeByID(Record[i]);
+        if (!ElTy) return Error("Invalid CE_INSERTVAL record");
+        Elts.push_back(ValueList.getConstantFwdRef(Record[i+1], ElTy));
+      }
+      V = ConstantExpr::getInsertValue(Elts[0], Elts[1],
+                                       &Elts[2], Elts.size()-1);
+      break;
+    }
     case bitc::CST_CODE_CE_SELECT:  // CE_SELECT: [opval#, opval#, opval#]
       if (Record.size() < 3) return Error("Invalid CE_SELECT record");
       V = ConstantExpr::getSelect(ValueList.getConstantFwdRef(Record[0],
@@ -1301,6 +1324,47 @@
       break;
     }
       
+    case bitc::FUNC_CODE_INST_EXTRACTVAL: { // EXTRACTVAL: [n x operands]
+      unsigned OpNum = 0;
+      Value *Agg;
+      if (getValueTypePair(Record, OpNum, NextValueNo, Agg))
+        return Error("Invalid EXTRACTVAL record");
+
+      SmallVector<Value*, 16> EXTRACTVALIdx;
+      while (OpNum != Record.size()) {
+        Value *Op;
+        if (getValueTypePair(Record, OpNum, NextValueNo, Op))
+          return Error("Invalid EXTRACTVAL record");
+        EXTRACTVALIdx.push_back(Op);
+      }
+
+      I = ExtractValueInst::Create(Agg,
+                                   EXTRACTVALIdx.begin(), EXTRACTVALIdx.end());
+      break;
+    }
+      
+    case bitc::FUNC_CODE_INST_INSERTVAL: { // INSERTVAL: [n x operands]
+      unsigned OpNum = 0;
+      Value *Agg;
+      if (getValueTypePair(Record, OpNum, NextValueNo, Agg))
+        return Error("Invalid INSERTVAL record");
+      Value *Val;
+      if (getValueTypePair(Record, OpNum, NextValueNo, Val))
+        return Error("Invalid INSERTVAL record");
+
+      SmallVector<Value*, 16> INSERTVALIdx;
+      while (OpNum != Record.size()) {
+        Value *Op;
+        if (getValueTypePair(Record, OpNum, NextValueNo, Op))
+          return Error("Invalid INSERTVAL record");
+        INSERTVALIdx.push_back(Op);
+      }
+
+      I = InsertValueInst::Create(Agg, Val,
+                                  INSERTVALIdx.begin(), INSERTVALIdx.end());
+      break;
+    }
+      
     case bitc::FUNC_CODE_INST_SELECT: { // SELECT: [opval, ty, opval, opval]
       unsigned OpNum = 0;
       Value *TrueVal, *FalseVal, *Cond;

Modified: llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp?rev=51468&r1=51467&r2=51468&view=diff

==============================================================================
--- llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp (original)
+++ llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp Thu May 22 20:55:30 2008
@@ -610,6 +610,20 @@
           Record.push_back(VE.getValueID(C->getOperand(i)));
         }
         break;
+      case Instruction::ExtractValue:
+        Code = bitc::CST_CODE_CE_EXTRACTVAL;
+        for (unsigned i = 0, e = CE->getNumOperands(); i != e; ++i) {
+          Record.push_back(VE.getTypeID(C->getOperand(i)->getType()));
+          Record.push_back(VE.getValueID(C->getOperand(i)));
+        }
+        break;
+      case Instruction::InsertValue:
+        Code = bitc::CST_CODE_CE_INSERTVAL;
+        for (unsigned i = 0, e = CE->getNumOperands(); i != e; ++i) {
+          Record.push_back(VE.getTypeID(C->getOperand(i)->getType()));
+          Record.push_back(VE.getValueID(C->getOperand(i)));
+        }
+        break;
       case Instruction::Select:
         Code = bitc::CST_CODE_CE_SELECT;
         Record.push_back(VE.getValueID(C->getOperand(0)));
@@ -718,6 +732,16 @@
     for (unsigned i = 0, e = I.getNumOperands(); i != e; ++i)
       PushValueAndType(I.getOperand(i), InstID, Vals, VE);
     break;
+  case Instruction::ExtractValue:
+    Code = bitc::FUNC_CODE_INST_EXTRACTVAL;
+    for (unsigned i = 0, e = I.getNumOperands(); i != e; ++i)
+      PushValueAndType(I.getOperand(i), InstID, Vals, VE);
+    break;
+  case Instruction::InsertValue:
+    Code = bitc::FUNC_CODE_INST_INSERTVAL;
+    for (unsigned i = 0, e = I.getNumOperands(); i != e; ++i)
+      PushValueAndType(I.getOperand(i), InstID, Vals, VE);
+    break;
   case Instruction::Select:
     Code = bitc::FUNC_CODE_INST_SELECT;
     PushValueAndType(I.getOperand(1), InstID, Vals, VE);

Modified: llvm/trunk/lib/Bitcode/Writer/ValueEnumerator.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Writer/ValueEnumerator.cpp?rev=51468&r1=51467&r2=51468&view=diff

==============================================================================
--- llvm/trunk/lib/Bitcode/Writer/ValueEnumerator.cpp (original)
+++ llvm/trunk/lib/Bitcode/Writer/ValueEnumerator.cpp Thu May 22 20:55:30 2008
@@ -21,9 +21,9 @@
 #include <algorithm>
 using namespace llvm;
 
-static bool isFirstClassType(const std::pair<const llvm::Type*,
-                             unsigned int> &P) {
-  return P.first->isFirstClassType();
+static bool isSingleValueType(const std::pair<const llvm::Type*,
+                              unsigned int> &P) {
+  return P.first->isSingleValueType();
 }
 
 static bool isIntegerValue(const std::pair<const Value*, unsigned> &V) {
@@ -103,10 +103,10 @@
   // in the table (have low bit-width).
   std::stable_sort(Types.begin(), Types.end(), CompareByFrequency);
     
-  // Partition the Type ID's so that the first-class types occur before the
+  // Partition the Type ID's so that the single-value types occur before the
   // aggregate types.  This allows the aggregate types to be dropped from the
   // type table after parsing the global variable initializers.
-  std::partition(Types.begin(), Types.end(), isFirstClassType);
+  std::partition(Types.begin(), Types.end(), isSingleValueType);
 
   // Now that we rearranged the type table, rebuild TypeMap.
   for (unsigned i = 0, e = Types.size(); i != e; ++i)
@@ -264,11 +264,11 @@
 /// there are none, return -1.
 int ValueEnumerator::PurgeAggregateValues() {
   // If there are no aggregate values at the end of the list, return -1.
-  if (Values.empty() || Values.back().first->getType()->isFirstClassType())
+  if (Values.empty() || Values.back().first->getType()->isSingleValueType())
     return -1;
   
   // Otherwise, remove aggregate values...
-  while (!Values.empty() && !Values.back().first->getType()->isFirstClassType())
+  while (!Values.empty() && !Values.back().first->getType()->isSingleValueType())
     Values.pop_back();
   
   // ... and return the new size.

Added: llvm/trunk/test/Assembler/insertextractvalue.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/insertextractvalue.ll?rev=51468&view=auto

==============================================================================
--- llvm/trunk/test/Assembler/insertextractvalue.ll (added)
+++ llvm/trunk/test/Assembler/insertextractvalue.ll Thu May 22 20:55:30 2008
@@ -0,0 +1,13 @@
+; RUN: llvm-as < %s
+
+;define float @foo({{i32},{float, double}}* %p) {
+  ;%t = load {{i32},{float, double}}* %p
+  ;%s = extractvalue {{i32},{float, double}} %t, i32 1, i32 0
+  ;%r = insertvalue {{i32},{float, double}} %t, double 2.0, i32 1, i32 1
+  ;store {{i32},{float, double}} %r, {{i32},{float, double}}* %p
+  ;ret float %s
+;}
+define float @bar({{i32},{float, double}}* %p) {
+  store {{i32},{float, double}} insertvalue ({{i32},{float, double}}{{i32}{i32 4},{float, double}{float 4.0, double 5.0}}, double 20.0, i32 1, i32 1), {{i32},{float, double}}* %p
+  ret float extractvalue ({{i32},{float, double}}{{i32}{i32 3},{float, double}{float 7.0, double 9.0}}, i32 1, i32 0)
+}

Modified: llvm/trunk/test/Verifier/2006-07-11-StoreStruct.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Verifier/2006-07-11-StoreStruct.ll?rev=51468&r1=51467&r2=51468&view=diff

==============================================================================
--- llvm/trunk/test/Verifier/2006-07-11-StoreStruct.ll (original)
+++ llvm/trunk/test/Verifier/2006-07-11-StoreStruct.ll Thu May 22 20:55:30 2008
@@ -1,5 +1,7 @@
-; RUN: not llvm-as < %s |& grep {Instruction operands must be first-class}
-; PR826
+; RUN: llvm-as < %s |& not grep {Instruction operands must be first-class}
+
+; This previously was for PR826, but structs are now first-class so
+; the following is now valid.
 
         %struct_4 = type { i32 }
 

Modified: llvm/trunk/utils/llvm.grm
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/llvm.grm?rev=51468&r1=51467&r2=51468&view=diff

==============================================================================
--- llvm/trunk/utils/llvm.grm (original)
+++ llvm/trunk/utils/llvm.grm Thu May 22 20:55:30 2008
@@ -222,7 +222,9 @@
  | vfcmp FPredicates "(" ^ ConstVal ^ "," ConstVal ^ ")"
  | extractelement "(" ^ ConstVal ^ "," ConstVal ^ ")"
  | insertelement "(" ^ ConstVal ^ "," ConstVal ^ "," ConstVal ^ ")"
- | shufflevector "(" ^ ConstVal ^ "," ConstVal ^ "," ConstVal ^ ")" ;
+ | shufflevector "(" ^ ConstVal ^ "," ConstVal ^ "," ConstVal ^ ")"
+ | extractvalue "(" ^ ConstVal IndexList ^ ")"
+ | insertvalue "(" ^ ConstVal ^ "," ConstVal IndexList ^ ")" ;
 
 ConstVector ::= ConstVector ^ "," ConstVal | ConstVal ;
 
@@ -373,4 +375,6 @@
  | OptVolatile load Types ValueRef OptCAlign
  | OptVolatile store ResolvedVal ^ "," Types ValueRef OptCAlign
  | getresult Types ValueRef ^ "," EUINT64VAL
- | getelementptr Types ValueRef IndexList ;
+ | getelementptr Types ValueRef IndexList
+ | extractvalue Types ValueRef IndexList 
+ | insertvalue Types ValueRef ^ "," Types ValueRef IndexList ;





More information about the llvm-commits mailing list