[llvm-commits] CVS: llvm/tools/llvm-upgrade/UpgradeParser.cpp UpgradeParser.cpp.cvs UpgradeParser.y UpgradeParser.y.cvs

Reid Spencer reid at x10sys.com
Sat Dec 2 23:10:41 PST 2006



Changes in directory llvm/tools/llvm-upgrade:

UpgradeParser.cpp updated: 1.16 -> 1.17
UpgradeParser.cpp.cvs updated: 1.16 -> 1.17
UpgradeParser.y updated: 1.16 -> 1.17
UpgradeParser.y.cvs updated: 1.16 -> 1.17
---
Log message:

Match the llvmAsmParser's handling of ICmp and FCmp instructions.


---
Diffs of the changes:  (+1812 -1730)

 UpgradeParser.cpp     | 1747 +++++++++++++++++++++++++-------------------------
 UpgradeParser.cpp.cvs | 1747 +++++++++++++++++++++++++-------------------------
 UpgradeParser.y       |   24 
 UpgradeParser.y.cvs   |   24 
 4 files changed, 1812 insertions(+), 1730 deletions(-)


Index: llvm/tools/llvm-upgrade/UpgradeParser.cpp
diff -u llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.16 llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.17
--- llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.16	Sat Dec  2 21:16:48 2006
+++ llvm/tools/llvm-upgrade/UpgradeParser.cpp	Sun Dec  3 01:10:26 2006
@@ -813,16 +813,16 @@
 /* YYFINAL -- State number of the termination state. */
 #define YYFINAL  4
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1464
+#define YYLAST   1483
 
 /* YYNTOKENS -- Number of terminals. */
 #define YYNTOKENS  165
 /* YYNNTS -- Number of nonterminals. */
 #define YYNNTS  75
 /* YYNRULES -- Number of rules. */
-#define YYNRULES  293
+#define YYNRULES  299
 /* YYNRULES -- Number of states. */
-#define YYNSTATES  564
+#define YYNSTATES  582
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -889,29 +889,29 @@
       79,    81,    83,    85,    87,    89,    91,    93,    95,    97,
       99,   101,   103,   105,   107,   109,   111,   113,   115,   117,
      119,   121,   123,   125,   127,   129,   131,   133,   135,   137,
-     139,   141,   143,   145,   147,   149,   151,   153,   156,   157,
-     159,   161,   163,   165,   167,   169,   171,   172,   174,   176,
-     178,   180,   182,   184,   187,   188,   189,   192,   193,   197,
-     200,   201,   203,   204,   208,   210,   213,   215,   217,   219,
+     139,   141,   143,   145,   147,   149,   151,   153,   155,   157,
+     159,   161,   164,   165,   167,   169,   171,   173,   175,   177,
+     179,   180,   182,   184,   186,   188,   190,   192,   195,   196,
+     197,   200,   201,   205,   208,   209,   211,   212,   216,   218,
      221,   223,   225,   227,   229,   231,   233,   235,   237,   239,
-     241,   243,   245,   247,   249,   251,   253,   256,   261,   267,
-     273,   277,   280,   283,   285,   289,   291,   295,   297,   298,
-     303,   307,   311,   316,   321,   325,   328,   331,   334,   337,
-     340,   343,   346,   349,   352,   355,   362,   368,   377,   384,
-     391,   398,   406,   413,   420,   429,   438,   442,   444,   446,
-     448,   450,   453,   456,   461,   464,   466,   468,   470,   475,
-     478,   483,   490,   497,   504,   511,   515,   520,   521,   523,
-     525,   527,   531,   535,   539,   543,   547,   551,   553,   554,
-     556,   558,   560,   561,   564,   568,   570,   572,   576,   578,
-     579,   588,   590,   592,   596,   598,   600,   604,   605,   607,
-     609,   613,   614,   616,   618,   620,   622,   624,   626,   628,
-     630,   632,   636,   638,   644,   646,   648,   650,   652,   655,
-     658,   660,   663,   666,   667,   669,   671,   673,   676,   679,
-     683,   693,   703,   712,   727,   729,   731,   738,   744,   747,
-     754,   762,   764,   768,   770,   771,   774,   776,   782,   788,
-     794,   802,   805,   810,   815,   822,   827,   832,   839,   846,
-     849,   857,   859,   862,   863,   865,   866,   870,   877,   881,
-     888,   891,   896,   903
+     241,   243,   245,   247,   249,   251,   253,   255,   257,   259,
+     261,   264,   269,   275,   281,   285,   288,   291,   293,   297,
+     299,   303,   305,   306,   311,   315,   319,   324,   329,   333,
+     336,   339,   342,   345,   348,   351,   354,   357,   360,   363,
+     370,   376,   385,   392,   399,   406,   414,   422,   429,   436,
+     445,   454,   458,   460,   462,   464,   466,   469,   472,   477,
+     480,   482,   484,   486,   491,   494,   499,   506,   513,   520,
+     527,   531,   536,   537,   539,   541,   543,   547,   551,   555,
+     559,   563,   567,   569,   570,   572,   574,   576,   577,   580,
+     584,   586,   588,   592,   594,   595,   604,   606,   608,   612,
+     614,   616,   620,   621,   623,   625,   629,   630,   632,   634,
+     636,   638,   640,   642,   644,   646,   648,   652,   654,   660,
+     662,   664,   666,   668,   671,   674,   676,   679,   682,   683,
+     685,   687,   689,   692,   695,   699,   709,   719,   728,   743,
+     745,   747,   754,   760,   763,   770,   778,   780,   784,   786,
+     787,   790,   792,   798,   804,   810,   818,   826,   829,   834,
+     839,   846,   851,   856,   863,   870,   873,   881,   883,   886,
+     887,   889,   890,   894,   901,   905,   912,   915,   920,   927
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
@@ -922,92 +922,95 @@
       -1,    85,    -1,    86,    -1,    87,    -1,    88,    -1,    89,
       -1,    90,    -1,    91,    -1,    92,    -1,    93,    -1,    94,
       -1,    95,    -1,    96,    -1,    97,    -1,    98,    -1,    99,
-      -1,   100,    -1,   101,    -1,   102,    -1,   103,    -1,   104,
-      -1,   105,    -1,   106,    -1,   107,    -1,   118,    -1,   119,
-      -1,   120,    -1,   121,    -1,   108,    -1,   109,    -1,   110,
-      -1,   111,    -1,   112,    -1,   113,    -1,   114,    -1,   115,
-      -1,   116,    -1,   117,    -1,   130,    -1,   131,    -1,   132,
-      -1,   133,    -1,   139,    -1,   140,    -1,   141,    -1,   142,
-      -1,   143,    -1,   144,    -1,   145,    -1,   146,    -1,   147,
-      -1,   148,    -1,   149,    -1,   150,    -1,   138,    -1,    11,
-      -1,     9,    -1,     7,    -1,     5,    -1,    12,    -1,    10,
-      -1,     8,    -1,     6,    -1,   175,    -1,   176,    -1,    13,
-      -1,    14,    -1,   208,   151,    -1,    -1,    42,    -1,    43,
-      -1,    44,    -1,    48,    -1,    45,    -1,    46,    -1,    47,
-      -1,    -1,    66,    -1,    67,    -1,    68,    -1,    69,    -1,
-      70,    -1,    71,    -1,    65,    18,    -1,    -1,    -1,    57,
-      18,    -1,    -1,   152,    57,    18,    -1,    37,    30,    -1,
-      -1,   184,    -1,    -1,   152,   187,   186,    -1,   184,    -1,
-      57,    18,    -1,   190,    -1,     3,    -1,   192,    -1,     3,
-      -1,   192,    -1,     4,    -1,     5,    -1,     6,    -1,     7,
-      -1,     8,    -1,     9,    -1,    10,    -1,    11,    -1,    12,
-      -1,    13,    -1,    14,    -1,    15,    -1,    16,    -1,   222,
-      -1,   191,    -1,   153,    18,    -1,   189,   154,   194,   155,
-      -1,   156,    18,   157,   192,   158,    -1,   159,    18,   157,
-     192,   160,    -1,   161,   193,   162,    -1,   161,   162,    -1,
-     192,   163,    -1,   192,    -1,   193,   152,   192,    -1,   193,
-      -1,   193,   152,    40,    -1,    40,    -1,    -1,   190,   156,
-     197,   158,    -1,   190,   156,   158,    -1,   190,   164,    30,
-      -1,   190,   159,   197,   160,    -1,   190,   161,   197,   162,
-      -1,   190,   161,   162,    -1,   190,    22,    -1,   190,    23,
-      -1,   190,   222,    -1,   190,   196,    -1,   190,    24,    -1,
-     175,   167,    -1,   176,    18,    -1,     4,    25,    -1,     4,
-      26,    -1,   178,    21,    -1,   174,   154,   195,    39,   190,
-     155,    -1,   127,   154,   195,   237,   155,    -1,   129,   154,
-     195,   152,   195,   152,   195,   155,    -1,   168,   154,   195,
-     152,   195,   155,    -1,   169,   154,   195,   152,   195,   155,
-      -1,   170,   154,   195,   152,   195,   155,    -1,   171,   172,
-     154,   195,   152,   195,   155,    -1,   173,   154,   195,   152,
-     195,   155,    -1,   135,   154,   195,   152,   195,   155,    -1,
-     136,   154,   195,   152,   195,   152,   195,   155,    -1,   137,
-     154,   195,   152,   195,   152,   195,   155,    -1,   197,   152,
-     195,    -1,   195,    -1,    35,    -1,    36,    -1,   200,    -1,
-     200,   217,    -1,   200,   219,    -1,   200,    63,    62,   203,
-      -1,   200,    31,    -1,   202,    -1,    50,    -1,    58,    -1,
-     202,   179,    27,   188,    -1,   202,   219,    -1,   202,    63,
-      62,   203,    -1,   202,   179,   180,   198,   195,   186,    -1,
-     202,   179,   201,   198,   190,   186,    -1,   202,   179,    45,
-     198,   190,   186,    -1,   202,   179,    47,   198,   190,   186,
-      -1,   202,    51,   205,    -1,   202,    59,   151,   206,    -1,
-      -1,    30,    -1,    56,    -1,    55,    -1,    53,   151,   204,
-      -1,    54,   151,    18,    -1,    52,   151,    30,    -1,    72,
-     151,    30,    -1,   156,   207,   158,    -1,   207,   152,    30,
-      -1,    30,    -1,    -1,    28,    -1,    30,    -1,   208,    -1,
-      -1,   190,   209,    -1,   211,   152,   210,    -1,   210,    -1,
-     211,    -1,   211,   152,    40,    -1,    40,    -1,    -1,   181,
-     188,   208,   154,   212,   155,   185,   182,    -1,    32,    -1,
-     161,    -1,   180,   213,   214,    -1,    33,    -1,   162,    -1,
-     215,   225,   216,    -1,    -1,    45,    -1,    47,    -1,    34,
-     218,   213,    -1,    -1,    64,    -1,    17,    -1,    18,    -1,
-      21,    -1,    25,    -1,    26,    -1,    22,    -1,    23,    -1,
-      24,    -1,   159,   197,   160,    -1,   196,    -1,    62,   220,
-      30,   152,    30,    -1,   166,    -1,   208,    -1,   222,    -1,
-     221,    -1,   190,   223,    -1,   225,   226,    -1,   226,    -1,
-     227,   229,    -1,   227,   231,    -1,    -1,    29,    -1,    78,
-      -1,    77,    -1,    73,   224,    -1,    73,     3,    -1,    74,
-      15,   223,    -1,    74,     4,   223,   152,    15,   223,   152,
-      15,   223,    -1,    75,   177,   223,   152,    15,   223,   156,
-     230,   158,    -1,    75,   177,   223,   152,    15,   223,   156,
-     158,    -1,   179,    76,   181,   188,   223,   154,   234,   155,
-      39,    15,   223,   228,    15,   223,    -1,   228,    -1,    79,
-      -1,   230,   177,   221,   152,    15,   223,    -1,   177,   221,
-     152,    15,   223,    -1,   179,   236,    -1,   190,   156,   223,
-     152,   223,   158,    -1,   232,   152,   156,   223,   152,   223,
-     158,    -1,   224,    -1,   233,   152,   224,    -1,   233,    -1,
-      -1,    61,    60,    -1,    60,    -1,   168,   190,   223,   152,
-     223,    -1,   169,   190,   223,   152,   223,    -1,   170,   190,
-     223,   152,   223,    -1,   171,   172,   190,   223,   152,   223,
-     155,    -1,    49,   224,    -1,   173,   224,   152,   224,    -1,
-     174,   224,    39,   190,    -1,   129,   224,   152,   224,   152,
-     224,    -1,   134,   224,   152,   190,    -1,   135,   224,   152,
-     224,    -1,   136,   224,   152,   224,   152,   224,    -1,   137,
-     224,   152,   224,   152,   224,    -1,   128,   232,    -1,   235,
-     181,   188,   223,   154,   234,   155,    -1,   239,    -1,   152,
-     233,    -1,    -1,    38,    -1,    -1,   122,   190,   183,    -1,
-     122,   190,   152,    10,   223,   183,    -1,   123,   190,   183,
-      -1,   123,   190,   152,    10,   223,   183,    -1,   124,   224,
-      -1,   238,   125,   190,   223,    -1,   238,   126,   224,   152,
-     190,   223,    -1,   127,   190,   223,   237,    -1
+      -1,   102,    -1,   103,    -1,   104,    -1,   105,    -1,   106,
+      -1,   107,    -1,   118,    -1,   119,    -1,   120,    -1,   121,
+      -1,   108,    -1,   109,    -1,   110,    -1,   111,    -1,   112,
+      -1,   113,    -1,   114,    -1,   115,    -1,   116,    -1,   117,
+      -1,   118,    -1,   119,    -1,   120,    -1,   121,    -1,    25,
+      -1,    26,    -1,   130,    -1,   131,    -1,   132,    -1,   133,
+      -1,   139,    -1,   140,    -1,   141,    -1,   142,    -1,   143,
+      -1,   144,    -1,   145,    -1,   146,    -1,   147,    -1,   148,
+      -1,   149,    -1,   150,    -1,   138,    -1,    11,    -1,     9,
+      -1,     7,    -1,     5,    -1,    12,    -1,    10,    -1,     8,
+      -1,     6,    -1,   175,    -1,   176,    -1,    13,    -1,    14,
+      -1,   208,   151,    -1,    -1,    42,    -1,    43,    -1,    44,
+      -1,    48,    -1,    45,    -1,    46,    -1,    47,    -1,    -1,
+      66,    -1,    67,    -1,    68,    -1,    69,    -1,    70,    -1,
+      71,    -1,    65,    18,    -1,    -1,    -1,    57,    18,    -1,
+      -1,   152,    57,    18,    -1,    37,    30,    -1,    -1,   184,
+      -1,    -1,   152,   187,   186,    -1,   184,    -1,    57,    18,
+      -1,   190,    -1,     3,    -1,   192,    -1,     3,    -1,   192,
+      -1,     4,    -1,     5,    -1,     6,    -1,     7,    -1,     8,
+      -1,     9,    -1,    10,    -1,    11,    -1,    12,    -1,    13,
+      -1,    14,    -1,    15,    -1,    16,    -1,   222,    -1,   191,
+      -1,   153,    18,    -1,   189,   154,   194,   155,    -1,   156,
+      18,   157,   192,   158,    -1,   159,    18,   157,   192,   160,
+      -1,   161,   193,   162,    -1,   161,   162,    -1,   192,   163,
+      -1,   192,    -1,   193,   152,   192,    -1,   193,    -1,   193,
+     152,    40,    -1,    40,    -1,    -1,   190,   156,   197,   158,
+      -1,   190,   156,   158,    -1,   190,   164,    30,    -1,   190,
+     159,   197,   160,    -1,   190,   161,   197,   162,    -1,   190,
+     161,   162,    -1,   190,    22,    -1,   190,    23,    -1,   190,
+     222,    -1,   190,   196,    -1,   190,    24,    -1,   175,   167,
+      -1,   176,    18,    -1,     4,    25,    -1,     4,    26,    -1,
+     178,    21,    -1,   174,   154,   195,    39,   190,   155,    -1,
+     127,   154,   195,   237,   155,    -1,   129,   154,   195,   152,
+     195,   152,   195,   155,    -1,   168,   154,   195,   152,   195,
+     155,    -1,   169,   154,   195,   152,   195,   155,    -1,   170,
+     154,   195,   152,   195,   155,    -1,   100,   171,   154,   195,
+     152,   195,   155,    -1,   101,   172,   154,   195,   152,   195,
+     155,    -1,   173,   154,   195,   152,   195,   155,    -1,   135,
+     154,   195,   152,   195,   155,    -1,   136,   154,   195,   152,
+     195,   152,   195,   155,    -1,   137,   154,   195,   152,   195,
+     152,   195,   155,    -1,   197,   152,   195,    -1,   195,    -1,
+      35,    -1,    36,    -1,   200,    -1,   200,   217,    -1,   200,
+     219,    -1,   200,    63,    62,   203,    -1,   200,    31,    -1,
+     202,    -1,    50,    -1,    58,    -1,   202,   179,    27,   188,
+      -1,   202,   219,    -1,   202,    63,    62,   203,    -1,   202,
+     179,   180,   198,   195,   186,    -1,   202,   179,   201,   198,
+     190,   186,    -1,   202,   179,    45,   198,   190,   186,    -1,
+     202,   179,    47,   198,   190,   186,    -1,   202,    51,   205,
+      -1,   202,    59,   151,   206,    -1,    -1,    30,    -1,    56,
+      -1,    55,    -1,    53,   151,   204,    -1,    54,   151,    18,
+      -1,    52,   151,    30,    -1,    72,   151,    30,    -1,   156,
+     207,   158,    -1,   207,   152,    30,    -1,    30,    -1,    -1,
+      28,    -1,    30,    -1,   208,    -1,    -1,   190,   209,    -1,
+     211,   152,   210,    -1,   210,    -1,   211,    -1,   211,   152,
+      40,    -1,    40,    -1,    -1,   181,   188,   208,   154,   212,
+     155,   185,   182,    -1,    32,    -1,   161,    -1,   180,   213,
+     214,    -1,    33,    -1,   162,    -1,   215,   225,   216,    -1,
+      -1,    45,    -1,    47,    -1,    34,   218,   213,    -1,    -1,
+      64,    -1,    17,    -1,    18,    -1,    21,    -1,    25,    -1,
+      26,    -1,    22,    -1,    23,    -1,    24,    -1,   159,   197,
+     160,    -1,   196,    -1,    62,   220,    30,   152,    30,    -1,
+     166,    -1,   208,    -1,   222,    -1,   221,    -1,   190,   223,
+      -1,   225,   226,    -1,   226,    -1,   227,   229,    -1,   227,
+     231,    -1,    -1,    29,    -1,    78,    -1,    77,    -1,    73,
+     224,    -1,    73,     3,    -1,    74,    15,   223,    -1,    74,
+       4,   223,   152,    15,   223,   152,    15,   223,    -1,    75,
+     177,   223,   152,    15,   223,   156,   230,   158,    -1,    75,
+     177,   223,   152,    15,   223,   156,   158,    -1,   179,    76,
+     181,   188,   223,   154,   234,   155,    39,    15,   223,   228,
+      15,   223,    -1,   228,    -1,    79,    -1,   230,   177,   221,
+     152,    15,   223,    -1,   177,   221,   152,    15,   223,    -1,
+     179,   236,    -1,   190,   156,   223,   152,   223,   158,    -1,
+     232,   152,   156,   223,   152,   223,   158,    -1,   224,    -1,
+     233,   152,   224,    -1,   233,    -1,    -1,    61,    60,    -1,
+      60,    -1,   168,   190,   223,   152,   223,    -1,   169,   190,
+     223,   152,   223,    -1,   170,   190,   223,   152,   223,    -1,
+     100,   171,   190,   223,   152,   223,   155,    -1,   101,   172,
+     190,   223,   152,   223,   155,    -1,    49,   224,    -1,   173,
+     224,   152,   224,    -1,   174,   224,    39,   190,    -1,   129,
+     224,   152,   224,   152,   224,    -1,   134,   224,   152,   190,
+      -1,   135,   224,   152,   224,    -1,   136,   224,   152,   224,
+     152,   224,    -1,   137,   224,   152,   224,   152,   224,    -1,
+     128,   232,    -1,   235,   181,   188,   223,   154,   234,   155,
+      -1,   239,    -1,   152,   233,    -1,    -1,    38,    -1,    -1,
+     122,   190,   183,    -1,   122,   190,   152,    10,   223,   183,
+      -1,   123,   190,   183,    -1,   123,   190,   152,    10,   223,
+     183,    -1,   124,   224,    -1,   238,   125,   190,   223,    -1,
+     238,   126,   224,   152,   190,   223,    -1,   127,   190,   223,
+     237,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -1015,34 +1018,34 @@
 {
        0,   332,   332,   332,   333,   333,   337,   337,   337,   337,
      337,   337,   337,   338,   338,   338,   338,   339,   339,   339,
-     340,   340,   340,   340,   340,   340,   341,   341,   342,   342,
-     342,   342,   342,   342,   342,   342,   342,   342,   343,   343,
-     343,   343,   343,   343,   343,   343,   343,   343,   344,   344,
-     344,   344,   345,   345,   345,   345,   345,   345,   345,   346,
-     346,   346,   346,   346,   346,   351,   351,   351,   351,   352,
-     352,   352,   352,   353,   353,   354,   354,   357,   360,   365,
-     365,   365,   365,   365,   365,   366,   367,   370,   370,   370,
-     370,   370,   371,   372,   377,   382,   383,   386,   387,   395,
-     401,   402,   405,   406,   415,   416,   429,   429,   430,   430,
-     431,   435,   435,   435,   435,   435,   435,   435,   436,   436,
-     436,   436,   436,   438,   442,   446,   449,   454,   460,   468,
-     476,   482,   486,   497,   500,   508,   509,   514,   517,   527,
-     533,   538,   544,   550,   556,   561,   567,   573,   579,   585,
-     591,   597,   603,   609,   615,   623,   637,   649,   654,   660,
-     665,   673,   678,   686,   691,   696,   706,   711,   716,   716,
-     726,   731,   734,   739,   743,   747,   749,   749,   752,   764,
-     769,   774,   781,   788,   795,   802,   807,   812,   817,   819,
-     819,   822,   827,   834,   839,   846,   853,   858,   859,   867,
-     867,   868,   868,   870,   877,   881,   885,   888,   893,   896,
-     898,   918,   919,   921,   930,   931,   933,   941,   942,   943,
-     947,   960,   961,   964,   964,   964,   964,   964,   964,   964,
-     965,   966,   971,   972,   981,   981,   985,   991,  1002,  1008,
-    1011,  1019,  1023,  1028,  1031,  1037,  1037,  1039,  1044,  1049,
-    1054,  1062,  1069,  1075,  1095,  1100,  1106,  1111,  1119,  1128,
-    1135,  1143,  1147,  1154,  1155,  1159,  1164,  1167,  1173,  1178,
-    1186,  1191,  1196,  1204,  1218,  1223,  1228,  1233,  1238,  1243,
-    1248,  1265,  1270,  1271,  1275,  1276,  1279,  1286,  1293,  1300,
-    1307,  1312,  1319,  1326
+     340,   340,   340,   340,   340,   340,   341,   341,   341,   341,
+     341,   341,   341,   341,   341,   341,   342,   342,   342,   342,
+     342,   342,   342,   342,   342,   342,   343,   343,   343,   343,
+     343,   343,   344,   344,   344,   344,   345,   345,   345,   345,
+     345,   345,   345,   346,   346,   346,   346,   346,   346,   351,
+     351,   351,   351,   352,   352,   352,   352,   353,   353,   354,
+     354,   357,   360,   365,   365,   365,   365,   365,   365,   366,
+     367,   370,   370,   370,   370,   370,   371,   372,   377,   382,
+     383,   386,   387,   395,   401,   402,   405,   406,   415,   416,
+     429,   429,   430,   430,   431,   435,   435,   435,   435,   435,
+     435,   435,   436,   436,   436,   436,   436,   438,   442,   446,
+     449,   454,   460,   468,   476,   482,   486,   497,   500,   508,
+     509,   514,   517,   527,   533,   538,   544,   550,   556,   561,
+     567,   573,   579,   585,   591,   597,   603,   609,   615,   623,
+     637,   649,   654,   660,   665,   673,   678,   683,   691,   696,
+     701,   711,   716,   721,   721,   731,   736,   739,   744,   748,
+     752,   754,   754,   757,   769,   774,   779,   786,   793,   800,
+     807,   812,   817,   822,   824,   824,   827,   832,   839,   844,
+     851,   858,   863,   864,   872,   872,   873,   873,   875,   882,
+     886,   890,   893,   898,   901,   903,   923,   924,   926,   935,
+     936,   938,   946,   947,   948,   952,   965,   966,   969,   969,
+     969,   969,   969,   969,   969,   970,   971,   976,   977,   986,
+     986,   990,   996,  1007,  1013,  1016,  1024,  1028,  1033,  1036,
+    1042,  1042,  1044,  1049,  1054,  1059,  1067,  1074,  1080,  1100,
+    1105,  1111,  1116,  1124,  1133,  1140,  1148,  1152,  1159,  1160,
+    1164,  1169,  1172,  1178,  1183,  1191,  1196,  1201,  1206,  1214,
+    1228,  1233,  1238,  1243,  1248,  1253,  1258,  1275,  1280,  1281,
+    1285,  1286,  1289,  1296,  1303,  1310,  1317,  1322,  1329,  1336
 };
 #endif
 
@@ -1075,7 +1078,7 @@
   "UITOFP", "SITOFP", "PTRTOINT", "INTTOPTR", "BITCAST", "'='", "','",
   "'\\\\'", "'('", "')'", "'['", "'x'", "']'", "'<'", "'>'", "'{'", "'}'",
   "'*'", "'c'", "$accept", "IntVal", "EInt64Val", "ArithmeticOps",
-  "LogicalOps", "SetCondOps", "CompareOps", "Predicates", "ShiftOps",
+  "LogicalOps", "SetCondOps", "IPredicates", "FPredicates", "ShiftOps",
   "CastOps", "SIntType", "UIntType", "IntType", "FPType", "OptAssign",
   "OptLinkage", "OptCallingConv", "OptAlign", "OptCAlign", "SectionString",
   "OptSection", "GlobalVarAttributes", "GlobalVarAttribute", "TypesV",
@@ -1123,34 +1126,34 @@
 {
        0,   165,   166,   166,   167,   167,   168,   168,   168,   168,
      168,   168,   168,   168,   168,   168,   168,   169,   169,   169,
-     170,   170,   170,   170,   170,   170,   171,   171,   172,   172,
+     170,   170,   170,   170,   170,   170,   171,   171,   171,   171,
+     171,   171,   171,   171,   171,   171,   172,   172,   172,   172,
      172,   172,   172,   172,   172,   172,   172,   172,   172,   172,
-     172,   172,   172,   172,   172,   172,   172,   172,   173,   173,
-     173,   173,   174,   174,   174,   174,   174,   174,   174,   174,
-     174,   174,   174,   174,   174,   175,   175,   175,   175,   176,
-     176,   176,   176,   177,   177,   178,   178,   179,   179,   180,
-     180,   180,   180,   180,   180,   180,   180,   181,   181,   181,
-     181,   181,   181,   181,   181,   182,   182,   183,   183,   184,
-     185,   185,   186,   186,   187,   187,   188,   188,   189,   189,
-     190,   191,   191,   191,   191,   191,   191,   191,   191,   191,
-     191,   191,   191,   192,   192,   192,   192,   192,   192,   192,
-     192,   192,   192,   193,   193,   194,   194,   194,   194,   195,
-     195,   195,   195,   195,   195,   195,   195,   195,   195,   195,
-     195,   195,   195,   195,   195,   196,   196,   196,   196,   196,
-     196,   196,   196,   196,   196,   196,   197,   197,   198,   198,
-     199,   200,   200,   200,   200,   200,   201,   201,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   203,   204,
-     204,   205,   205,   205,   205,   206,   207,   207,   207,   208,
-     208,   209,   209,   210,   211,   211,   212,   212,   212,   212,
-     213,   214,   214,   215,   216,   216,   217,   218,   218,   218,
-     219,   220,   220,   221,   221,   221,   221,   221,   221,   221,
-     221,   221,   221,   221,   222,   222,   223,   223,   224,   225,
-     225,   226,   227,   227,   227,   228,   228,   229,   229,   229,
-     229,   229,   229,   229,   229,   229,   230,   230,   231,   232,
-     232,   233,   233,   234,   234,   235,   235,   236,   236,   236,
-     236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
-     236,   236,   237,   237,   238,   238,   239,   239,   239,   239,
-     239,   239,   239,   239
+     172,   172,   173,   173,   173,   173,   174,   174,   174,   174,
+     174,   174,   174,   174,   174,   174,   174,   174,   174,   175,
+     175,   175,   175,   176,   176,   176,   176,   177,   177,   178,
+     178,   179,   179,   180,   180,   180,   180,   180,   180,   180,
+     180,   181,   181,   181,   181,   181,   181,   181,   181,   182,
+     182,   183,   183,   184,   185,   185,   186,   186,   187,   187,
+     188,   188,   189,   189,   190,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   192,   192,   192,
+     192,   192,   192,   192,   192,   192,   192,   193,   193,   194,
+     194,   194,   194,   195,   195,   195,   195,   195,   195,   195,
+     195,   195,   195,   195,   195,   195,   195,   195,   195,   196,
+     196,   196,   196,   196,   196,   196,   196,   196,   196,   196,
+     196,   197,   197,   198,   198,   199,   200,   200,   200,   200,
+     200,   201,   201,   202,   202,   202,   202,   202,   202,   202,
+     202,   202,   202,   203,   204,   204,   205,   205,   205,   205,
+     206,   207,   207,   207,   208,   208,   209,   209,   210,   211,
+     211,   212,   212,   212,   212,   213,   214,   214,   215,   216,
+     216,   217,   218,   218,   218,   219,   220,   220,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   222,
+     222,   223,   223,   224,   225,   225,   226,   227,   227,   227,
+     228,   228,   229,   229,   229,   229,   229,   229,   229,   229,
+     229,   230,   230,   231,   232,   232,   233,   233,   234,   234,
+     235,   235,   236,   236,   236,   236,   236,   236,   236,   236,
+     236,   236,   236,   236,   236,   236,   236,   236,   237,   237,
+     238,   238,   239,   239,   239,   239,   239,   239,   239,   239
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1163,29 +1166,29 @@
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     2,     0,     1,
-       1,     1,     1,     1,     1,     1,     0,     1,     1,     1,
-       1,     1,     1,     2,     0,     0,     2,     0,     3,     2,
-       0,     1,     0,     3,     1,     2,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     2,     4,     5,     5,
-       3,     2,     2,     1,     3,     1,     3,     1,     0,     4,
-       3,     3,     4,     4,     3,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     6,     5,     8,     6,     6,
-       6,     7,     6,     6,     8,     8,     3,     1,     1,     1,
-       1,     2,     2,     4,     2,     1,     1,     1,     4,     2,
-       4,     6,     6,     6,     6,     3,     4,     0,     1,     1,
-       1,     3,     3,     3,     3,     3,     3,     1,     0,     1,
-       1,     1,     0,     2,     3,     1,     1,     3,     1,     0,
-       8,     1,     1,     3,     1,     1,     3,     0,     1,     1,
-       3,     0,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     3,     1,     5,     1,     1,     1,     1,     2,     2,
-       1,     2,     2,     0,     1,     1,     1,     2,     2,     3,
-       9,     9,     8,    14,     1,     1,     6,     5,     2,     6,
-       7,     1,     3,     1,     0,     2,     1,     5,     5,     5,
-       7,     2,     4,     4,     6,     4,     4,     6,     6,     2,
-       7,     1,     2,     0,     1,     0,     3,     6,     3,     6,
-       2,     4,     6,     4
+       1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
+       0,     1,     1,     1,     1,     1,     1,     2,     0,     0,
+       2,     0,     3,     2,     0,     1,     0,     3,     1,     2,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       2,     4,     5,     5,     3,     2,     2,     1,     3,     1,
+       3,     1,     0,     4,     3,     3,     4,     4,     3,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     6,
+       5,     8,     6,     6,     6,     7,     7,     6,     6,     8,
+       8,     3,     1,     1,     1,     1,     2,     2,     4,     2,
+       1,     1,     1,     4,     2,     4,     6,     6,     6,     6,
+       3,     4,     0,     1,     1,     1,     3,     3,     3,     3,
+       3,     3,     1,     0,     1,     1,     1,     0,     2,     3,
+       1,     1,     3,     1,     0,     8,     1,     1,     3,     1,
+       1,     3,     0,     1,     1,     3,     0,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     3,     1,     5,     1,
+       1,     1,     1,     2,     2,     1,     2,     2,     0,     1,
+       1,     1,     2,     2,     3,     9,     9,     8,    14,     1,
+       1,     6,     5,     2,     6,     7,     1,     3,     1,     0,
+       2,     1,     5,     5,     5,     7,     7,     2,     4,     4,
+       6,     4,     4,     6,     6,     2,     7,     1,     2,     0,
+       1,     0,     3,     6,     3,     6,     2,     4,     6,     4
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1193,460 +1196,468 @@
    means the default is an error.  */
 static const unsigned short int yydefact[] =
 {
-     187,     0,    86,   175,     1,   174,   217,    79,    80,    81,
-      83,    84,    85,    82,     0,    94,   243,   171,   172,   199,
-     200,     0,     0,     0,    86,     0,   179,   218,   219,    94,
-       0,     0,    87,    88,    89,    90,    91,    92,     0,     0,
-     244,   243,   240,    78,     0,     0,     0,     0,   185,     0,
-       0,     0,     0,     0,   176,   177,     0,     0,    77,   220,
-     188,   173,    93,   107,   111,   112,   113,   114,   115,   116,
-     117,   118,   119,   120,   121,   122,   123,     2,     3,     0,
-       0,     0,     0,   234,     0,     0,   106,   125,   110,   235,
-     124,   211,   212,   213,   214,   215,   216,   239,     0,     0,
-       0,   246,   245,   255,   285,   254,   241,   242,     0,     0,
-       0,     0,   198,   186,   180,   178,   168,   169,     0,     0,
-       0,     0,   126,     0,     0,   109,   131,   133,     0,     0,
-     138,   132,   248,     0,   247,     0,     0,    68,    72,    67,
-      71,    66,    70,    65,    69,    73,    74,     0,   284,     0,
-     266,     0,    94,     6,     7,     8,     9,    10,    11,    12,
+     192,     0,    90,   180,     1,   179,   222,    83,    84,    85,
+      87,    88,    89,    86,     0,    98,   248,   176,   177,   204,
+     205,     0,     0,     0,    90,     0,   184,   223,   224,    98,
+       0,     0,    91,    92,    93,    94,    95,    96,     0,     0,
+     249,   248,   245,    82,     0,     0,     0,     0,   190,     0,
+       0,     0,     0,     0,   181,   182,     0,     0,    81,   225,
+     193,   178,    97,   111,   115,   116,   117,   118,   119,   120,
+     121,   122,   123,   124,   125,   126,   127,     2,     3,     0,
+       0,     0,     0,   239,     0,     0,   110,   129,   114,   240,
+     128,   216,   217,   218,   219,   220,   221,   244,     0,     0,
+       0,   251,   250,   260,   291,   259,   246,   247,     0,     0,
+       0,     0,   203,   191,   185,   183,   173,   174,     0,     0,
+       0,     0,   130,     0,     0,   113,   135,   137,     0,     0,
+     142,   136,   253,     0,   252,     0,     0,    72,    76,    71,
+      75,    70,    74,    69,    73,    77,    78,     0,   290,     0,
+     271,     0,    98,     6,     7,     8,     9,    10,    11,    12,
       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,     0,     0,     0,     0,     0,
-       0,    48,    49,    50,    51,     0,     0,     0,     0,    64,
-      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,     0,     0,     0,     0,     0,     0,    94,   258,
-       0,   281,   193,   190,   189,   191,   192,   194,   197,     0,
-     102,   102,   111,   112,   113,   114,   115,   116,   117,   118,
-     119,   120,   121,     0,     0,     0,     0,   102,   102,     0,
-       0,     0,   130,   209,   137,   135,     0,   223,   224,   225,
-     228,   229,   230,   226,   227,   221,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   232,   237,
-     236,   238,     0,   249,     0,   271,   265,     0,    97,    97,
-     290,     0,     0,   279,     0,     0,     0,     0,     0,     0,
-       0,     0,    28,    29,    30,    31,    32,    33,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    34,    35,
-      36,    37,     0,     0,     0,     0,     0,     0,     0,   195,
-       0,   183,   184,   152,   153,     4,     5,   150,   151,   154,
-     145,   146,   149,     0,     0,     0,     0,   148,   147,   181,
-     182,   108,   108,   134,   208,   202,   205,   206,     0,     0,
-     127,   222,     0,     0,     0,     0,     0,     0,   167,     0,
+      23,    24,    25,     0,     0,     0,     0,     0,     0,     0,
+       0,    52,    53,    54,    55,     0,     0,     0,     0,    68,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,     0,     0,     0,     0,     0,    98,   263,     0,
+     287,   198,   195,   194,   196,   197,   199,   202,     0,   106,
+     106,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+     124,   125,     0,     0,     0,     0,   106,   106,     0,     0,
+       0,   134,   214,   141,   139,     0,   228,   229,   230,   233,
+     234,   235,   231,   232,   226,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   237,   242,
+     241,   243,     0,   254,     0,   277,   270,     0,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,     0,    50,
+      51,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,     0,   101,   101,   296,     0,
+       0,   285,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   200,     0,   188,   189,
+     156,   157,     4,     5,   154,   155,   158,   149,   150,   153,
+       0,     0,     0,     0,   152,   151,   186,   187,   112,   112,
+     138,   213,   207,   210,   211,     0,     0,   131,   227,     0,
+       0,     0,     0,     0,     0,     0,     0,   172,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     286,     0,   288,   283,     0,     0,     0,     0,     0,     0,
+     292,     0,   294,   289,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   201,
+       0,     0,   108,   106,   144,     0,     0,   148,     0,   145,
+     132,   133,   206,   208,     0,   104,   140,     0,     0,     0,
+     289,     0,     0,     0,     0,     0,   236,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     196,     0,     0,   104,   102,   140,     0,     0,   144,     0,
-     141,   128,   129,   201,   203,     0,   100,   136,     0,   283,
-       0,     0,     0,     0,     0,   231,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   293,
-       0,     0,     0,   275,   276,     0,     0,     0,     0,     0,
-       0,   272,   273,     0,   291,     0,    99,   105,   103,   139,
-     142,   143,   207,   204,   101,    95,     0,     0,     0,     0,
-       0,     0,   166,     0,     0,     0,     0,     0,     0,     0,
-       0,   264,    97,    98,    97,   261,   282,     0,     0,     0,
-       0,     0,   267,   268,   269,     0,   264,     0,     0,   210,
-     233,   156,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   263,     0,     0,   287,   289,     0,
-       0,     0,   274,   277,   278,     0,     0,   292,    96,     0,
-     163,     0,     0,   158,   159,   160,     0,   162,   155,     0,
-     252,     0,     0,     0,   262,   259,     0,   270,   280,     0,
-       0,     0,   161,   250,     0,   251,     0,     0,   260,   157,
-     164,   165,     0,     0,     0,     0,     0,     0,   257,     0,
-       0,   256,     0,   253
+       0,   299,     0,     0,     0,   281,   282,     0,     0,     0,
+       0,     0,   278,   279,     0,   297,     0,   103,   109,   107,
+     143,   146,   147,   212,   209,   105,    99,     0,     0,     0,
+       0,     0,     0,     0,     0,   171,     0,     0,     0,     0,
+       0,     0,     0,   269,     0,     0,   101,   102,   101,   266,
+     288,     0,     0,     0,     0,     0,   272,   273,   274,   269,
+       0,     0,   215,   238,     0,     0,   160,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   268,     0,
+       0,     0,     0,   293,   295,     0,     0,     0,   280,   283,
+     284,     0,   298,   100,     0,     0,     0,   168,     0,     0,
+     162,   163,   164,   167,   159,     0,   257,     0,     0,     0,
+     275,   276,   267,   264,     0,   286,   165,   166,     0,     0,
+       0,   255,     0,   256,     0,     0,   265,   161,   169,   170,
+       0,     0,     0,     0,     0,     0,   262,     0,     0,   261,
+       0,   258
 };
 
 /* YYDEFGOTO[NTERM-NUM]. */
 static const short int yydefgoto[] =
 {
-      -1,    83,   327,   262,   263,   264,   265,   312,   266,   267,
-     233,   234,   147,   235,    24,    15,    38,   489,   370,   393,
-     455,   321,   394,    84,    85,   236,    87,    88,   128,   246,
-     358,   268,   359,   118,     1,     2,    57,     3,    61,   215,
-      48,   113,   219,    89,   404,   346,   347,   348,    39,    93,
-      16,    96,    17,    29,    18,   352,   269,    90,   271,   475,
-      41,    42,    43,   105,   106,   532,   107,   283,   504,   505,
-     208,   209,   429,   210,   211
+      -1,    83,   334,   263,   264,   265,   288,   305,   266,   267,
+     232,   233,   147,   234,    24,    15,    38,   502,   380,   402,
+     466,   328,   403,    84,    85,   235,    87,    88,   128,   245,
+     367,   268,   368,   118,     1,     2,    57,     3,    61,   214,
+      48,   113,   218,    89,   413,   353,   354,   355,    39,    93,
+      16,    96,    17,    29,    18,   359,   269,    90,   271,   489,
+      41,    42,    43,   105,   106,   548,   107,   311,   518,   519,
+     207,   208,   441,   209,   210
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -507
+#define YYPACT_NINF -501
 static const short int yypact[] =
 {
-    -507,    31,    62,   973,  -507,  -507,   -18,  -507,  -507,  -507,
-    -507,  -507,  -507,  -507,    -3,   124,    43,  -507,  -507,  -507,
-    -507,   -33,   -60,    25,   177,   -37,  -507,  -507,  -507,   124,
-     102,   128,  -507,  -507,  -507,  -507,  -507,  -507,   800,   -25,
-    -507,   -17,  -507,    49,    12,    16,    26,    29,  -507,    28,
-     102,   800,     7,     7,  -507,  -507,     7,     7,  -507,  -507,
-    -507,  -507,  -507,    42,  -507,  -507,  -507,  -507,  -507,  -507,
-    -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,   163,
-     164,   165,   469,  -507,    27,    47,  -507,  -507,  -109,  -507,
-    -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,   837,    20,
-     146,  -507,  -507,  -507,  1314,  -507,  -507,  -507,   155,    19,
-     179,   172,   173,  -507,  -507,  -507,  -507,  -507,   882,   882,
-     921,   882,  -507,    50,    51,  -507,  -507,  -109,  -126,    52,
-     564,  -507,    42,  1112,  -507,  1112,  1112,  -507,  -507,  -507,
-    -507,  -507,  -507,  -507,  -507,  -507,  -507,  1112,  -507,   882,
-    -507,   149,   124,  -507,  -507,  -507,  -507,  -507,  -507,  -507,
-    -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,
-    -507,  -507,  -507,  -507,  -507,   882,   882,   882,   882,   882,
-     882,  -507,  -507,  -507,  -507,   882,   882,   882,   882,  -507,
-    -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,
-    -507,  -507,   882,   882,   882,   860,   882,   882,   124,  -507,
-      -5,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,   -64,
-      58,    58,    77,   117,   193,   126,   194,   142,   195,   144,
-     198,   197,   207,   153,   213,   211,   964,    58,    58,   882,
-     882,   882,  -507,   640,  -507,    81,    82,  -507,  -507,  -507,
-    -507,  -507,  -507,  -507,  -507,   170,    84,    86,    87,    88,
-      89,   921,    90,    91,    92,   860,    93,    94,  -507,  -507,
-    -507,  -507,    97,  -507,   104,  -507,  -507,   800,   105,   109,
-    -507,  1112,    80,   112,   114,   115,   118,   120,   121,  1112,
-    1112,  1112,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,
-    -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,
-    -507,  -507,   882,   123,   230,   800,   882,   882,   220,  -507,
-     -23,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,
-    -507,  -507,  -507,   678,   921,   516,   246,  -507,  -507,  -507,
-    -507,   -73,   -48,  -109,  -507,    27,  -507,   131,   125,   723,
-    -507,  -507,   256,   921,   921,   921,   921,   921,  -507,   -76,
-     921,   921,   921,   133,   921,   921,   274,   278,  1112,    -1,
-    -507,     1,  -507,   143,  1112,   138,   882,   882,   882,   882,
-     882,   147,   148,   150,  1112,   882,   882,  1112,  1112,   151,
-    -507,   266,   280,  -507,    58,  -507,   -57,   -74,  -507,  -124,
-    -507,  -507,  -507,  -507,  -507,   762,   264,  -507,   152,   143,
-     154,   156,   157,   158,   921,  -507,   159,   161,   162,   921,
-     166,   268,  1112,  1112,   167,  1112,   287,  1112,   882,  -507,
-     171,  1112,   174,  -507,  -507,   175,   178,  1112,  1112,  1112,
-     180,  -507,  -507,   183,  -507,   882,  -507,  -507,  -507,  -507,
-    -507,  -507,  -507,  -507,  -507,   258,   286,   176,   921,   921,
-     921,   921,  -507,   921,   921,   921,   181,   921,   882,   192,
-     169,   882,   199,  -507,   199,  -507,   200,  1112,   201,   882,
-     882,   882,  -507,  -507,  -507,  1112,   882,  1112,   311,  -507,
-    -507,  -507,   202,   190,   203,   212,   191,   216,   217,   921,
-     218,   221,   334,    41,   200,   222,   293,  -507,  -507,   882,
-     208,  1112,  -507,  -507,  -507,   223,   224,  -507,  -507,   921,
-    -507,   921,   921,  -507,  -507,  -507,   225,  -507,  -507,  1112,
-    -507,  1201,    59,   336,  -507,  -507,   227,  -507,  -507,   226,
-     228,   231,  -507,  -507,   235,  -507,  1201,   373,  -507,  -507,
-    -507,  -507,   374,   242,  1112,  1112,   380,    98,  -507,  1112,
-     381,  -507,  1112,  -507
+    -501,    82,     9,   975,  -501,  -501,    72,  -501,  -501,  -501,
+    -501,  -501,  -501,  -501,    29,    34,    94,  -501,  -501,  -501,
+    -501,   -28,   -42,    66,   127,    25,  -501,  -501,  -501,    34,
+     122,   199,  -501,  -501,  -501,  -501,  -501,  -501,   839,   -17,
+    -501,   -19,  -501,    47,    67,    68,    69,    75,  -501,    71,
+     122,   839,    11,    11,  -501,  -501,    11,    11,  -501,  -501,
+    -501,  -501,  -501,    76,  -501,  -501,  -501,  -501,  -501,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,   207,
+     210,   211,   518,  -501,   123,    77,  -501,  -501,   -84,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,   876,     8,
+     253,  -501,  -501,  -501,  1333,  -501,  -501,  -501,   203,    80,
+     217,   206,   208,  -501,  -501,  -501,  -501,  -501,   922,   922,
+     960,   922,  -501,    83,    84,  -501,  -501,   -84,  -134,    88,
+     604,  -501,    76,  1131,  -501,  1131,  1131,  -501,  -501,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  1131,  -501,   922,
+    -501,   177,    34,  -501,  -501,  -501,  -501,  -501,  -501,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,
+    -501,  -501,  -501,   103,    81,   922,   922,   922,   922,   922,
+     922,  -501,  -501,  -501,  -501,   922,   922,   922,   922,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,
+    -501,  -501,   922,   922,   922,   922,   922,    34,  -501,    20,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,   -44,    91,
+      91,   130,   143,   226,   145,   227,   161,   230,   163,   231,
+     232,   233,   165,   234,   245,  1042,    91,    91,   922,   922,
+     922,  -501,   679,  -501,    99,   113,  -501,  -501,  -501,  -501,
+    -501,  -501,  -501,  -501,   205,   103,    81,   119,   120,   125,
+     128,   129,   960,   133,   134,   135,   139,   140,  -501,  -501,
+    -501,  -501,   124,  -501,   149,  -501,  -501,   839,  -501,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,   922,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,
+    -501,  -501,  -501,  -501,  -501,   922,   150,   151,  -501,  1131,
+     136,   153,   154,   155,   156,   157,   158,  1131,  1131,  1131,
+     159,   241,   839,   922,   922,   251,  -501,   -18,  -501,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,
+     717,   960,   549,   265,  -501,  -501,  -501,  -501,   -69,   -50,
+     -84,  -501,   123,  -501,   160,   142,   763,  -501,  -501,   283,
+     164,   166,   960,   960,   960,   960,   960,  -501,  -110,   960,
+     960,   960,   960,   960,   302,   304,  1131,  1131,  1131,     1,
+    -501,    12,  -501,   169,  1131,   167,   922,   922,   922,   922,
+     922,   172,   173,   176,   922,   922,  1131,  1131,   178,  -501,
+     299,   314,  -501,    91,  -501,   -40,   -68,  -501,   -74,  -501,
+    -501,  -501,  -501,  -501,   801,   301,  -501,   184,   960,   960,
+     169,   187,   188,   189,   190,   960,  -501,   194,   195,   201,
+     209,   316,  1131,  1131,   204,   212,   213,  1131,   341,  1131,
+     922,  -501,   214,  1131,   215,  -501,  -501,   216,   220,  1131,
+    1131,  1131,  -501,  -501,   219,  -501,   922,  -501,  -501,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,   303,   332,   222,   228,
+     229,   960,   960,   960,   960,  -501,   960,   960,   960,   960,
+     922,   238,   235,   922,  1131,  1131,   240,  -501,   240,  -501,
+     243,  1131,   244,   922,   922,   922,  -501,  -501,  -501,   922,
+    1131,   345,  -501,  -501,   960,   960,  -501,   246,   242,   247,
+     248,   252,   254,   255,   256,   257,   354,    26,   243,   258,
+     259,   260,   325,  -501,  -501,   922,   225,  1131,  -501,  -501,
+    -501,   261,  -501,  -501,   262,   269,   960,  -501,   960,   960,
+    -501,  -501,  -501,  -501,  -501,  1131,  -501,  1220,    56,   347,
+    -501,  -501,  -501,  -501,   250,  -501,  -501,  -501,   270,   271,
+     272,  -501,   249,  -501,  1220,   378,  -501,  -501,  -501,  -501,
+     391,   276,  1131,  1131,   415,   138,  -501,  1131,   416,  -501,
+    1131,  -501
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const short int yypgoto[] =
 {
-    -507,  -507,  -507,   294,   295,   296,   297,   137,   299,   300,
-     -98,   -97,  -495,  -507,   366,   386,  -135,  -507,  -274,     5,
-    -507,  -215,  -507,   -47,  -507,   -38,  -507,   -67,   282,  -507,
-    -102,   182,  -204,    60,  -507,  -507,  -507,  -507,   363,  -507,
-    -507,  -507,  -507,    -2,  -507,     9,  -507,  -507,   387,  -507,
-    -507,  -507,  -507,  -507,   412,  -507,  -506,  -103,    79,   -88,
-    -507,   382,  -507,  -133,  -507,  -507,  -507,  -507,    -6,   -61,
-    -507,  -507,    18,  -507,  -507
+    -501,  -501,  -501,   328,   329,   330,   181,   185,   333,   336,
+     -98,   -97,  -500,  -501,   400,   420,  -136,  -501,  -300,    31,
+    -501,  -216,  -501,   -45,  -501,   -38,  -501,   -81,   317,  -501,
+     126,   218,  -208,    74,  -501,  -501,  -501,  -501,   398,  -501,
+    -501,  -501,  -501,     2,  -501,    35,  -501,  -501,   423,  -501,
+    -501,  -501,  -501,  -501,   451,  -501,  -471,  -106,   -62,   -90,
+    -501,   417,  -501,  -116,  -501,  -501,  -501,  -501,    22,   -39,
+    -501,  -501,    43,  -501,  -501
 };
 
 /* 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 -171
+#define YYTABLE_NINF -176
 static const short int yytable[] =
 {
-      86,    25,   145,   146,   115,   372,   322,    91,   531,   425,
-     134,   427,    40,    86,   391,   127,    94,   277,   237,    44,
-      45,    46,   339,   340,   135,   544,   241,    27,   414,    28,
-     270,     4,   270,   270,   392,   136,   242,   546,   451,    47,
-     553,    25,   116,   117,   270,  -108,   137,   138,   139,   140,
-     141,   142,   143,   144,   131,    19,   426,    20,   426,    30,
-     133,   275,  -170,   127,   137,   138,   139,   140,   141,   142,
-     143,   144,    40,   315,   213,   214,   414,    19,   414,    20,
-     220,   221,   129,   238,   415,   401,   450,    50,   318,   280,
-     131,    49,   284,     5,   319,   414,     6,   285,   286,   287,
-     288,   449,   323,   324,     7,     8,     9,    10,    11,    12,
-      13,   133,   402,   119,    58,   131,   120,   121,   313,   314,
-     316,   317,    98,    99,   100,    14,   101,   102,   103,   396,
-     397,   399,    60,   338,   -68,   -68,    92,   278,   279,   133,
-     281,   282,   133,   -67,   -67,    95,    62,   133,   133,   133,
-     133,   137,   138,   139,   140,   141,   142,   143,   144,   -66,
-     -66,   -65,   -65,   108,   289,   290,   291,   109,   133,   133,
-     325,   326,   341,   342,   343,   101,   102,   110,   270,   448,
-     111,   122,   123,   124,   112,   212,   270,   270,   270,    31,
-      32,    33,    34,    35,    36,    37,  -109,   216,   507,   530,
-     508,   130,   217,   218,    51,   345,   243,   239,   240,   276,
-     320,   -72,   -71,   -70,   272,   273,   -69,   545,   -75,     7,
-       8,     9,    52,    11,    53,    13,   274,    54,   -76,   389,
-     368,   328,   329,   349,   351,    55,   374,   350,   353,    86,
-     354,   355,   356,   357,   360,   361,   362,   364,   365,   366,
-     390,   409,   410,   411,   412,   413,   367,   369,   416,   417,
-     418,   371,   420,   421,   375,   270,   376,   377,   387,   386,
-     378,   270,   379,   380,   384,   385,   400,    86,   388,   133,
-     406,   270,   343,   405,   270,   270,   408,   419,   432,   422,
-     434,   435,   436,   423,   431,   428,   446,   441,   447,   437,
-     438,   391,   439,   445,   456,   473,   458,   468,   459,   460,
-     461,   463,   462,   464,   465,   488,   490,   466,   467,   270,
-     270,   471,   270,   477,   270,   503,   479,   480,   270,   518,
-     481,   491,   485,   499,   270,   270,   270,   486,   133,   433,
-     133,   133,   133,   403,   502,   520,   523,   133,   442,   529,
-     426,   506,   509,   511,   519,   521,   492,   493,   494,   495,
-     373,   496,   497,   498,   522,   500,   535,   345,   381,   382,
-     383,   524,   525,   527,   270,   547,   528,   533,   537,   538,
-     542,   549,   270,   550,   270,   548,   551,   552,   554,   555,
-     133,   512,   513,   514,   556,   559,   562,   526,   202,   203,
-     204,   205,   363,   206,   207,   145,   146,   487,   270,   104,
-      56,   454,   245,   114,   453,    26,    59,   539,   337,   540,
-     541,   534,   476,    97,   560,   516,   270,   457,     0,     0,
-     501,     0,     0,   133,   145,   146,     0,     0,     0,     0,
-       0,   133,   133,   133,     0,     0,     0,   424,   133,     0,
-       0,   270,   270,   430,     0,     0,   270,     0,     0,   270,
-       0,     0,     0,   440,     0,     0,   443,   444,     0,     0,
-       0,   133,   125,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,     0,     0,    77,    78,
+      86,   127,   145,   146,   329,    25,   115,   382,   134,  -175,
+      40,   437,   135,    86,    94,    91,   277,   547,   240,   400,
+     346,   347,   439,   136,    44,    45,    46,   270,   241,   270,
+     270,   137,   138,   139,   140,   141,   142,   143,   144,   401,
+       5,   270,   425,     6,    47,    25,   116,   117,   564,   127,
+     426,     7,     8,     9,    10,    11,    12,    13,   438,   275,
+     133,   137,   138,   139,   140,   141,   142,   143,   144,   438,
+    -112,   322,    14,   272,   273,    19,   562,    20,   425,   131,
+     219,   220,     4,   237,   425,   274,   129,   308,   462,   410,
+     312,    30,   461,   571,   131,   313,   314,   315,   316,    31,
+      32,    33,    34,    35,    36,    37,   289,   290,   325,    49,
+     411,   133,   425,   131,   326,   320,   321,    27,   460,    28,
+      98,    99,   100,    40,   101,   102,   103,   119,    50,   345,
+     120,   121,   405,   406,   408,   212,   213,   306,   307,   133,
+     309,   310,   133,    95,    92,   323,   324,   133,   133,   133,
+     133,    19,    60,    20,    51,   330,   331,   348,   349,   350,
+     -72,   -72,   -71,   -71,   317,   318,   319,   133,   133,     7,
+       8,     9,    52,    11,    53,    13,    58,    54,   -70,   -70,
+     -69,   -69,   332,   333,   546,    55,   523,   459,   524,   291,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,   303,   304,   270,   352,   278,   279,   280,   281,   282,
+     283,   270,   270,   270,   563,   101,   102,    62,   108,   109,
+     110,   284,   285,   286,   287,   122,   111,   112,   123,   124,
+    -113,   130,   376,   211,   398,   215,   216,   276,   217,    86,
+     238,   239,   242,   327,   -76,   -75,   236,   383,   -74,   -73,
+     377,   356,   335,   -79,   -80,   391,   392,   393,   137,   138,
+     139,   140,   141,   142,   143,   144,   336,   378,   357,   358,
+     270,   270,   270,   362,   363,   350,   374,   396,   270,   364,
+     395,   399,   365,   366,    86,   397,   133,   369,   370,   371,
+     270,   270,   384,   372,   373,   409,   444,   415,   446,   447,
+     448,   375,   379,   381,   452,   385,   386,   387,   388,   389,
+     390,   394,   414,   417,   434,   435,   436,   432,   418,   433,
+     419,   440,   442,   443,   449,   450,   270,   270,   451,   457,
+     456,   270,   458,   270,   454,   455,   467,   270,   400,   471,
+     472,   473,   474,   270,   270,   270,   476,   477,   133,   445,
+     133,   133,   133,   478,   412,   480,   133,   453,   483,   487,
+     501,   479,   503,   533,   484,   485,   491,   493,   494,   545,
+     481,   482,   495,   499,   504,   486,   352,   488,   270,   270,
+     505,   492,   438,   553,   506,   270,   565,   496,   497,   498,
+     516,   517,   522,   572,   270,   525,   527,   537,   536,   538,
+     539,   570,   133,   528,   529,   530,   573,   540,   566,   541,
+     542,   543,   544,   549,   550,   551,   555,   556,   500,   145,
+     146,   270,   520,   521,   557,   567,   568,   569,   574,   526,
+     577,   580,   202,   203,   204,   552,   360,   205,   532,   270,
+     206,   361,   515,   104,    56,   133,   465,   244,   114,   464,
+     145,   146,    59,   344,    26,   133,   133,   133,    97,   578,
+     531,   133,   490,   470,     0,   554,   270,   270,     0,     0,
+       0,   270,     0,     0,   270,     0,     0,     0,     0,     0,
+       0,     0,     0,   561,     0,     0,     0,   133,   420,   421,
+     422,   423,   424,     0,     0,   427,   428,   429,   430,   431,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     575,   576,     0,     0,     0,   579,     0,     0,   581,     0,
+       0,   125,    64,    65,    66,    67,    68,    69,    70,    71,
+      72,    73,    74,    75,    76,     0,     0,    77,    78,     0,
+       0,     0,     0,     0,   468,   469,    19,     0,    20,     0,
+       0,   475,   125,   221,   222,   223,   224,   225,   226,   227,
+     228,   229,   230,   231,    75,    76,     0,     0,    77,    78,
        0,     0,     0,     0,     0,     0,     0,    19,     0,    20,
-       0,   469,   470,     0,   472,     0,   474,     0,     0,     0,
-     478,     0,     0,     0,     0,     0,   482,   483,   484,   125,
-     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
-     232,    75,    76,     0,     0,    77,    78,     0,     0,     0,
-       0,     0,     0,     0,    19,     0,    20,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   510,     0,     0,     0,
-       0,     0,     0,     0,   515,     0,   517,   125,    64,    65,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   507,   508,   509,
+     510,     0,   511,   512,   513,   514,     0,   125,    64,    65,
       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
       76,     0,     0,    77,    78,     0,     0,     0,     0,     0,
-     536,     0,    19,     0,    20,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   244,     0,     0,     0,   543,     0,
+     534,   535,    19,     0,    20,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   243,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    79,     0,     0,    80,     0,     0,    81,     0,
-      82,   126,     0,   557,   558,     0,     0,     0,   561,     0,
-       0,   563,     0,   125,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,     0,     0,    77,
-      78,     0,     0,     0,     0,     0,     0,     0,    19,    79,
-      20,     0,    80,     0,     0,    81,     0,    82,   398,     0,
-     344,   125,   222,   223,   224,   225,   226,   227,   228,   229,
-     230,   231,   232,    75,    76,     0,     0,    77,    78,     0,
-       0,     0,     0,     0,     0,     0,    19,     0,    20,     0,
+       0,     0,   558,     0,   559,   560,     0,     0,     0,     0,
+       0,    79,     0,     0,    80,     0,     0,    81,     0,    82,
+     126,     0,   125,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,    75,    76,     0,     0,    77,    78,
+       0,     0,    79,     0,     0,    80,     0,    19,    81,    20,
+      82,   407,     0,     0,     0,     0,     0,     0,     0,   351,
+     125,   221,   222,   223,   224,   225,   226,   227,   228,   229,
+     230,   231,    75,    76,     0,     0,    77,    78,     0,     0,
+       0,     0,     0,     0,     0,    19,     0,    20,     0,     0,
        0,     0,     0,     0,     0,     0,     0,    79,     0,     0,
       80,     0,     0,    81,     0,    82,   125,    64,    65,    66,
       67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
        0,     0,    77,    78,     0,     0,     0,     0,     0,     0,
        0,    19,     0,    20,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   407,     0,   125,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
-       0,    77,    78,     0,     0,     0,     0,     0,     0,     0,
-      19,     0,    20,    79,     0,     0,    80,     0,     0,    81,
-       0,    82,   452,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,     0,     0,    77,
-      78,     0,     0,     0,     0,     0,     0,     0,    19,     0,
-      20,    79,     0,     0,    80,     0,   395,    81,     0,    82,
-     132,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,     0,     0,    77,    78,     0,     0,
-       0,     0,     0,     0,     0,    19,     0,    20,     0,     0,
+       0,     0,     0,   416,   125,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,     0,     0,
+      77,    78,     0,     0,     0,     0,     0,     0,     0,    19,
+       0,    20,    79,     0,     0,    80,     0,     0,    81,     0,
+      82,   463,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,    75,    76,     0,     0,    77,    78,
+       0,     0,     0,     0,     0,     0,     0,    19,     0,    20,
+      79,     0,     0,    80,     0,   404,    81,     0,    82,   132,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,     0,     0,    77,    78,     0,     0,     0,
+       0,     0,     0,     0,    19,     0,    20,     0,     0,     0,
        0,     0,     0,     0,     0,     0,    79,     0,     0,    80,
        0,     0,    81,     0,    82,   125,    64,    65,    66,    67,
       68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
        0,    77,    78,     0,     0,     0,     0,     0,     0,     0,
-      19,     0,    20,     0,     0,    79,     0,     0,    80,     0,
-       0,    81,     0,    82,   125,   222,   223,   224,   225,   226,
-     227,   228,   229,   230,   231,   232,    75,    76,     0,     0,
-      77,    78,     0,     0,     0,     0,     0,     0,     0,    19,
-       0,    20,     0,    79,     0,     0,    80,     0,     0,    81,
-       0,    82,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,     0,    77,    78,     0,   330,   331,   332,     0,
-      79,     0,    19,    80,    20,     0,    81,     0,    82,     0,
-     -78,    19,     0,    20,     0,     0,     0,     6,   -78,   -78,
-       0,     0,     0,     0,     0,   -78,   -78,   -78,   -78,   -78,
-     -78,   -78,     0,   -78,    21,     0,     0,     0,     0,     0,
-       0,   -78,    22,     0,     0,    79,    23,     0,    80,     0,
-       0,    81,     0,    82,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,     0,     0,     0,     0,
-       0,     0,     0,     0,    79,     0,     0,    80,     0,     0,
-      81,     0,    82,     0,     0,     0,     0,     0,     0,     0,
-       0,   256,     0,   257,   181,   182,   183,   184,     0,   258,
-     259,   260,   189,   190,   191,   192,   193,   194,   195,   196,
-     197,   198,   199,   200,   201,     0,     0,     0,     0,     0,
-     333,     0,     0,   334,     0,   335,     0,     0,   336,   247,
-     248,    77,    78,   249,   250,   251,   252,   253,   254,     0,
-      19,     0,    20,     0,     0,     0,     0,     0,     0,     0,
+      19,     0,    20,     0,    79,     0,     0,    80,     0,     0,
+      81,     0,    82,   125,   221,   222,   223,   224,   225,   226,
+     227,   228,   229,   230,   231,    75,    76,     0,     0,    77,
+      78,     0,     0,     0,     0,     0,     0,     0,    19,     0,
+      20,     0,    79,     0,     0,    80,     0,     0,    81,     0,
+      82,     0,   -82,    19,     0,    20,     0,     0,     0,     6,
+     -82,   -82,     0,     0,     0,     0,     0,   -82,   -82,   -82,
+     -82,   -82,   -82,   -82,     0,   -82,    21,     0,     0,    79,
+       0,     0,    80,   -82,    22,    81,     0,    82,    23,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    77,    78,     0,   337,   338,   339,     0,     0,     0,
+      19,     0,    20,     0,     0,    79,     0,     0,    80,     0,
+       0,    81,     0,    82,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   255,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   153,   154,   155,   156,   157,   158,   159,   160,
+       0,     0,     0,    79,     0,     0,    80,     0,     0,    81,
+       0,    82,   153,   154,   155,   156,   157,   158,   159,   160,
      161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     171,   172,   173,   174,     0,     0,     0,     0,   247,   248,
-       0,     0,   249,   250,   251,   252,   253,   254,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   256,
-       0,   257,   181,   182,   183,   184,     0,   258,   259,   260,
+     171,   172,   255,   256,     0,     0,     0,     0,   246,   247,
+      77,    78,   248,   249,   250,   251,   252,   253,     0,    19,
+       0,    20,     0,     0,     0,     0,     0,     0,     0,   257,
+       0,   258,   181,   182,   183,   184,     0,   259,   260,   261,
      189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   255,     0,     0,     0,     0,     0,     0,
-       0,   261,     0,     0,     0,     0,     0,     0,     0,     0,
+     199,   200,   201,   254,     0,     0,     0,     0,   340,     0,
+       0,   341,     0,   342,     0,     0,   343,     0,     0,     0,
        0,   153,   154,   155,   156,   157,   158,   159,   160,   161,
      162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-     172,   173,   174,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   256,     0,
-     257,   181,   182,   183,   184,     0,   258,   259,   260,   189,
+     172,   255,   256,     0,     0,     0,     0,   246,   247,     0,
+       0,   248,   249,   250,   251,   252,   253,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   257,     0,
+     258,   181,   182,   183,   184,     0,   259,   260,   261,   189,
      190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
-     200,   201,   148,     0,     0,     0,     0,     0,     0,     0,
-     261,     0,     0,   149,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   150,   151,     0,     0,     0,     0,
+     200,   201,   254,     0,     0,     0,     0,     0,     0,     0,
+     262,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
+     255,   256,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     152,     0,     0,     0,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   257,     0,   258,
+     181,   182,   183,   184,     0,   259,   260,   261,   189,   190,
+     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
+     201,   148,     0,     0,     0,     0,     0,     0,     0,   262,
+       0,     0,   149,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   150,   151,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   152,
+       0,     0,     0,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   175,   176,   177,     0,
-       0,   178,   179,   180,   181,   182,   183,   184,   185,   186,
-     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
-     197,   198,   199,   200,   201
+       0,     0,     0,     0,     0,   175,   176,   177,     0,     0,
+     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+     198,   199,   200,   201
 };
 
 static const short int yycheck[] =
 {
-      38,     3,   100,   100,    51,   279,   221,    32,   503,    10,
-      98,    10,    29,    51,    37,    82,    33,   152,   120,    52,
-      53,    54,   237,   238,     4,   531,   152,    45,   152,    47,
-     133,     0,   135,   136,    57,    15,   162,   532,   162,    72,
-     546,    43,    35,    36,   147,   154,     5,     6,     7,     8,
-       9,    10,    11,    12,   163,    28,    57,    30,    57,    62,
-      98,   149,     0,   130,     5,     6,     7,     8,     9,    10,
-      11,    12,    29,   208,    55,    56,   152,    28,   152,    30,
-     118,   119,    84,   121,   160,   158,   160,    62,   152,   177,
-     163,   151,   180,    31,   158,   152,    34,   185,   186,   187,
-     188,   158,    25,    26,    42,    43,    44,    45,    46,    47,
-      48,   149,   160,    53,   151,   163,    56,    57,   206,   207,
-     125,   126,    73,    74,    75,    63,    77,    78,    79,   333,
-     334,   335,    30,   236,    17,    18,   161,   175,   176,   177,
-     178,   179,   180,    17,    18,   162,    18,   185,   186,   187,
-     188,     5,     6,     7,     8,     9,    10,    11,    12,    17,
-      18,    17,    18,   151,   202,   203,   204,   151,   206,   207,
-      17,    18,   239,   240,   241,    77,    78,   151,   281,   394,
-     151,    18,    18,    18,   156,    30,   289,   290,   291,    65,
-      66,    67,    68,    69,    70,    71,   154,    18,   472,   158,
-     474,   154,    30,    30,    27,   243,   154,   157,   157,    60,
-     152,    18,    18,    18,   135,   136,    18,   158,    21,    42,
-      43,    44,    45,    46,    47,    48,   147,    50,    21,   317,
-     277,    18,    21,   152,    64,    58,   156,   155,   154,   277,
-     154,   154,   154,   154,   154,   154,   154,   154,   154,   152,
-      30,   353,   354,   355,   356,   357,   152,   152,   360,   361,
-     362,   152,   364,   365,   152,   368,   152,   152,   315,    39,
-     152,   374,   152,   152,   312,   152,    30,   315,   316,   317,
-     155,   384,   349,   152,   387,   388,    30,   154,   376,    15,
-     378,   379,   380,    15,   156,   152,    30,   385,    18,   152,
-     152,    37,   152,   152,   152,    18,   152,    39,   152,   152,
-     152,   152,   414,   152,   152,    57,    30,   419,   152,   422,
-     423,   154,   425,   152,   427,   156,   152,   152,   431,    18,
-     152,   155,   152,   152,   437,   438,   439,   154,   376,   377,
-     378,   379,   380,   345,   152,   155,   155,   385,   386,    15,
-      57,   152,   152,   152,   152,   152,   458,   459,   460,   461,
-     281,   463,   464,   465,   152,   467,   158,   405,   289,   290,
-     291,   155,   155,   155,   477,    39,   155,   155,   155,   155,
-     155,   155,   485,   155,   487,   158,   155,   152,    15,    15,
-     428,   479,   480,   481,   152,    15,    15,   499,   104,   104,
-     104,   104,   265,   104,   104,   503,   503,   445,   511,    43,
-      24,   406,   130,    50,   405,     3,    29,   519,   236,   521,
-     522,   509,   428,    41,   557,   486,   529,   409,    -1,    -1,
-     468,    -1,    -1,   471,   532,   532,    -1,    -1,    -1,    -1,
-      -1,   479,   480,   481,    -1,    -1,    -1,   368,   486,    -1,
-      -1,   554,   555,   374,    -1,    -1,   559,    -1,    -1,   562,
-      -1,    -1,    -1,   384,    -1,    -1,   387,   388,    -1,    -1,
-      -1,   509,     3,     4,     5,     6,     7,     8,     9,    10,
+      38,    82,   100,   100,   220,     3,    51,   307,    98,     0,
+      29,    10,     4,    51,    33,    32,   152,   517,   152,    37,
+     236,   237,    10,    15,    52,    53,    54,   133,   162,   135,
+     136,     5,     6,     7,     8,     9,    10,    11,    12,    57,
+      31,   147,   152,    34,    72,    43,    35,    36,   548,   130,
+     160,    42,    43,    44,    45,    46,    47,    48,    57,   149,
+      98,     5,     6,     7,     8,     9,    10,    11,    12,    57,
+     154,   207,    63,   135,   136,    28,   547,    30,   152,   163,
+     118,   119,     0,   121,   152,   147,    84,   177,   162,   158,
+     180,    62,   160,   564,   163,   185,   186,   187,   188,    65,
+      66,    67,    68,    69,    70,    71,    25,    26,   152,   151,
+     160,   149,   152,   163,   158,   205,   206,    45,   158,    47,
+      73,    74,    75,    29,    77,    78,    79,    53,    62,   235,
+      56,    57,   340,   341,   342,    55,    56,   175,   176,   177,
+     178,   179,   180,   162,   161,   125,   126,   185,   186,   187,
+     188,    28,    30,    30,    27,    25,    26,   238,   239,   240,
+      17,    18,    17,    18,   202,   203,   204,   205,   206,    42,
+      43,    44,    45,    46,    47,    48,   151,    50,    17,    18,
+      17,    18,    17,    18,   158,    58,   486,   403,   488,   108,
+     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   309,   242,   102,   103,   104,   105,   106,
+     107,   317,   318,   319,   158,    77,    78,    18,   151,   151,
+     151,   118,   119,   120,   121,    18,   151,   156,    18,    18,
+     154,   154,   277,    30,   324,    18,    30,    60,    30,   277,
+     157,   157,   154,   152,    18,    18,   120,   309,    18,    18,
+     288,   152,    18,    21,    21,   317,   318,   319,     5,     6,
+       7,     8,     9,    10,    11,    12,    21,   305,   155,    64,
+     376,   377,   378,   154,   154,   356,   152,   322,   384,   154,
+      39,    30,   154,   154,   322,   323,   324,   154,   154,   154,
+     396,   397,   156,   154,   154,    30,   386,   155,   388,   389,
+     390,   152,   152,   152,   394,   152,   152,   152,   152,   152,
+     152,   152,   152,    30,   376,   377,   378,    15,   154,    15,
+     154,   152,   384,   156,   152,   152,   432,   433,   152,    30,
+     152,   437,    18,   439,   396,   397,   152,   443,    37,   152,
+     152,   152,   152,   449,   450,   451,   152,   152,   386,   387,
+     388,   389,   390,   152,   352,    39,   394,   395,   154,    18,
+      57,   152,    30,    18,   152,   152,   152,   152,   152,    15,
+     432,   433,   152,   154,   152,   437,   414,   439,   484,   485,
+     152,   443,    57,   158,   155,   491,    39,   449,   450,   451,
+     152,   156,   152,    15,   500,   152,   152,   155,   152,   152,
+     152,   152,   440,   493,   494,   495,    15,   155,   158,   155,
+     155,   155,   155,   155,   155,   155,   155,   155,   456,   517,
+     517,   527,   484,   485,   155,   155,   155,   155,   152,   491,
+      15,    15,   104,   104,   104,   525,   255,   104,   500,   545,
+     104,   256,   480,    43,    24,   483,   415,   130,    50,   414,
+     548,   548,    29,   235,     3,   493,   494,   495,    41,   575,
+     499,   499,   440,   420,    -1,   527,   572,   573,    -1,    -1,
+      -1,   577,    -1,    -1,   580,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   545,    -1,    -1,    -1,   525,   362,   363,
+     364,   365,   366,    -1,    -1,   369,   370,   371,   372,   373,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     572,   573,    -1,    -1,    -1,   577,    -1,    -1,   580,    -1,
+      -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    -1,    -1,    19,    20,    -1,
+      -1,    -1,    -1,    -1,   418,   419,    28,    -1,    30,    -1,
+      -1,   425,     3,     4,     5,     6,     7,     8,     9,    10,
       11,    12,    13,    14,    15,    16,    -1,    -1,    19,    20,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,    30,
-      -1,   422,   423,    -1,   425,    -1,   427,    -1,    -1,    -1,
-     431,    -1,    -1,    -1,    -1,    -1,   437,   438,   439,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    -1,    -1,    19,    20,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    28,    -1,    30,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   477,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   485,    -1,   487,     3,     4,     5,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   471,   472,   473,
+     474,    -1,   476,   477,   478,   479,    -1,     3,     4,     5,
        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
       16,    -1,    -1,    19,    20,    -1,    -1,    -1,    -1,    -1,
-     511,    -1,    28,    -1,    30,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,   529,    -1,
+     504,   505,    28,    -1,    30,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   153,    -1,    -1,   156,    -1,    -1,   159,    -1,
-     161,   162,    -1,   554,   555,    -1,    -1,    -1,   559,    -1,
-      -1,   562,    -1,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    -1,    -1,    19,
-      20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,   153,
-      30,    -1,   156,    -1,    -1,   159,    -1,   161,   162,    -1,
-      40,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    -1,    -1,    19,    20,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,    30,    -1,
+      -1,    -1,   536,    -1,   538,   539,    -1,    -1,    -1,    -1,
+      -1,   153,    -1,    -1,   156,    -1,    -1,   159,    -1,   161,
+     162,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    -1,    -1,    19,    20,
+      -1,    -1,   153,    -1,    -1,   156,    -1,    28,   159,    30,
+     161,   162,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    40,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    -1,    -1,    19,    20,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    28,    -1,    30,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,   153,    -1,    -1,
      156,    -1,    -1,   159,    -1,   161,     3,     4,     5,     6,
        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
       -1,    -1,    19,    20,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    28,    -1,    30,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    40,    -1,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    -1,
-      -1,    19,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      28,    -1,    30,   153,    -1,    -1,   156,    -1,    -1,   159,
-      -1,   161,    40,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    -1,    -1,    19,
-      20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,
-      30,   153,    -1,    -1,   156,    -1,   158,   159,    -1,   161,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    -1,    -1,    19,    20,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    28,    -1,    30,    -1,    -1,
+      -1,    -1,    -1,    40,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    -1,    -1,
+      19,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
+      -1,    30,   153,    -1,    -1,   156,    -1,    -1,   159,    -1,
+     161,    40,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    -1,    -1,    19,    20,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,    30,
+     153,    -1,    -1,   156,    -1,   158,   159,    -1,   161,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    -1,    -1,    19,    20,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    28,    -1,    30,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,   153,    -1,    -1,   156,
       -1,    -1,   159,    -1,   161,     3,     4,     5,     6,     7,
        8,     9,    10,    11,    12,    13,    14,    15,    16,    -1,
       -1,    19,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      28,    -1,    30,    -1,    -1,   153,    -1,    -1,   156,    -1,
-      -1,   159,    -1,   161,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    -1,    -1,
-      19,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
-      -1,    30,    -1,   153,    -1,    -1,   156,    -1,    -1,   159,
-      -1,   161,   102,   103,   104,   105,   106,   107,   108,   109,
-     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-     120,   121,    -1,    19,    20,    -1,    22,    23,    24,    -1,
-     153,    -1,    28,   156,    30,    -1,   159,    -1,   161,    -1,
-      27,    28,    -1,    30,    -1,    -1,    -1,    34,    35,    36,
-      -1,    -1,    -1,    -1,    -1,    42,    43,    44,    45,    46,
-      47,    48,    -1,    50,    51,    -1,    -1,    -1,    -1,    -1,
-      -1,    58,    59,    -1,    -1,   153,    63,    -1,   156,    -1,
-      -1,   159,    -1,   161,    80,    81,    82,    83,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-      96,    97,    98,    99,   100,   101,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   153,    -1,    -1,   156,    -1,    -1,
-     159,    -1,   161,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   127,    -1,   129,   130,   131,   132,   133,    -1,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,    -1,    -1,    -1,    -1,    -1,
-     156,    -1,    -1,   159,    -1,   161,    -1,    -1,   164,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
-      28,    -1,    30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      28,    -1,    30,    -1,   153,    -1,    -1,   156,    -1,    -1,
+     159,    -1,   161,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    -1,    -1,    19,
+      20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,
+      30,    -1,   153,    -1,    -1,   156,    -1,    -1,   159,    -1,
+     161,    -1,    27,    28,    -1,    30,    -1,    -1,    -1,    34,
+      35,    36,    -1,    -1,    -1,    -1,    -1,    42,    43,    44,
+      45,    46,    47,    48,    -1,    50,    51,    -1,    -1,   153,
+      -1,    -1,   156,    58,    59,   159,    -1,   161,    63,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1,
+      28,    -1,    30,    -1,    -1,   153,    -1,    -1,   156,    -1,
+      -1,   159,    -1,   161,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    80,    81,    82,    83,    84,    85,    86,    87,
+      -1,    -1,    -1,   153,    -1,    -1,   156,    -1,    -1,   159,
+      -1,   161,    80,    81,    82,    83,    84,    85,    86,    87,
       88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
       98,    99,   100,   101,    -1,    -1,    -1,    -1,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   127,
+      19,    20,    21,    22,    23,    24,    25,    26,    -1,    28,
+      -1,    30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   127,
       -1,   129,   130,   131,   132,   133,    -1,   135,   136,   137,
      138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-     148,   149,   150,    62,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     148,   149,   150,    62,    -1,    -1,    -1,    -1,   156,    -1,
+      -1,   159,    -1,   161,    -1,    -1,   164,    -1,    -1,    -1,
       -1,    80,    81,    82,    83,    84,    85,    86,    87,    88,
       89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-      99,   100,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      99,   100,   101,    -1,    -1,    -1,    -1,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,    26,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   127,    -1,
      129,   130,   131,   132,   133,    -1,   135,   136,   137,   138,
      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     159,    -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    60,    61,    -1,    -1,    -1,    -1,
+     149,   150,    62,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      76,    -1,    -1,    -1,    80,    81,    82,    83,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-      96,    97,    98,    99,   100,   101,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   127,    -1,   129,
+     130,   131,   132,   133,    -1,   135,   136,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   159,
+      -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    60,    61,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,
+      -1,    -1,    -1,    80,    81,    82,    83,    84,    85,    86,
+      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      97,    98,    99,   100,   101,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   122,   123,   124,    -1,
-      -1,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150
+      -1,    -1,    -1,    -1,    -1,   122,   123,   124,    -1,    -1,
+     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   150
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1673,43 +1684,45 @@
       97,    98,    99,   100,   101,   122,   123,   124,   127,   128,
      129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   168,   169,   170,   171,   173,   174,   235,   236,
-     238,   239,    30,    55,    56,   204,    18,    30,    30,   207,
-     190,   190,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,   175,   176,   178,   190,   195,   190,   157,
-     157,   152,   162,   154,    40,   193,   194,    17,    18,    21,
-      22,    23,    24,    25,    26,    62,   127,   129,   135,   136,
-     137,   159,   168,   169,   170,   171,   173,   174,   196,   221,
-     222,   223,   223,   223,   223,   224,    60,   181,   190,   190,
-     224,   190,   190,   232,   224,   224,   224,   224,   224,   190,
-     190,   190,   102,   103,   104,   105,   106,   107,   108,   109,
-     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-     120,   121,   172,   224,   224,   181,   125,   126,   152,   158,
-     152,   186,   186,    25,    26,    17,    18,   167,    18,    21,
-      22,    23,    24,   156,   159,   161,   164,   196,   222,   186,
-     186,   192,   192,   192,    40,   190,   210,   211,   212,   152,
-     155,    64,   220,   154,   154,   154,   154,   154,   195,   197,
-     154,   154,   154,   172,   154,   154,   152,   152,   188,   152,
+     149,   150,   168,   169,   170,   173,   174,   235,   236,   238,
+     239,    30,    55,    56,   204,    18,    30,    30,   207,   190,
+     190,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,   175,   176,   178,   190,   195,   190,   157,   157,
+     152,   162,   154,    40,   193,   194,    17,    18,    21,    22,
+      23,    24,    25,    26,    62,   100,   101,   127,   129,   135,
+     136,   137,   159,   168,   169,   170,   173,   174,   196,   221,
+     222,   223,   223,   223,   223,   224,    60,   181,   102,   103,
+     104,   105,   106,   107,   118,   119,   120,   121,   171,    25,
+      26,   108,   109,   110,   111,   112,   113,   114,   115,   116,
+     117,   118,   119,   120,   121,   172,   190,   190,   224,   190,
+     190,   232,   224,   224,   224,   224,   224,   190,   190,   190,
+     224,   224,   181,   125,   126,   152,   158,   152,   186,   186,
+      25,    26,    17,    18,   167,    18,    21,    22,    23,    24,
+     156,   159,   161,   164,   196,   222,   186,   186,   192,   192,
+     192,    40,   190,   210,   211,   212,   152,   155,    64,   220,
+     171,   172,   154,   154,   154,   154,   154,   195,   197,   154,
+     154,   154,   154,   154,   152,   152,   188,   190,   190,   152,
      183,   152,   183,   223,   156,   152,   152,   152,   152,   152,
-     152,   223,   223,   223,   190,   152,    39,   188,   190,   224,
-      30,    37,    57,   184,   187,   158,   197,   197,   162,   197,
-      30,   158,   160,   208,   209,   152,   155,    40,    30,   195,
-     195,   195,   195,   195,   152,   160,   195,   195,   195,   154,
-     195,   195,    15,    15,   223,    10,    57,    10,   152,   237,
-     223,   156,   224,   190,   224,   224,   224,   152,   152,   152,
-     223,   224,   190,   223,   223,   152,    30,    18,   186,   158,
-     160,   162,    40,   210,   184,   185,   152,   237,   152,   152,
-     152,   152,   195,   152,   152,   152,   195,   152,    39,   223,
-     223,   154,   223,    18,   223,   224,   233,   152,   223,   152,
-     152,   152,   223,   223,   223,   152,   154,   190,    57,   182,
-      30,   155,   195,   195,   195,   195,   195,   195,   195,   152,
-     195,   190,   152,   156,   233,   234,   152,   183,   183,   152,
-     223,   152,   224,   224,   224,   223,   234,   223,    18,   152,
-     155,   152,   152,   155,   155,   155,   195,   155,   155,    15,
-     158,   177,   230,   155,   224,   158,   223,   155,   155,   195,
-     195,   195,   155,   223,   221,   158,   177,    39,   158,   155,
-     155,   155,   152,   221,    15,    15,   152,   223,   223,    15,
-     228,   223,    15,   223
+     152,   223,   223,   223,   152,    39,   188,   190,   224,    30,
+      37,    57,   184,   187,   158,   197,   197,   162,   197,    30,
+     158,   160,   208,   209,   152,   155,    40,    30,   154,   154,
+     195,   195,   195,   195,   195,   152,   160,   195,   195,   195,
+     195,   195,    15,    15,   223,   223,   223,    10,    57,    10,
+     152,   237,   223,   156,   224,   190,   224,   224,   224,   152,
+     152,   152,   224,   190,   223,   223,   152,    30,    18,   186,
+     158,   160,   162,    40,   210,   184,   185,   152,   195,   195,
+     237,   152,   152,   152,   152,   195,   152,   152,   152,   152,
+      39,   223,   223,   154,   152,   152,   223,    18,   223,   224,
+     233,   152,   223,   152,   152,   152,   223,   223,   223,   154,
+     190,    57,   182,    30,   152,   152,   155,   195,   195,   195,
+     195,   195,   195,   195,   195,   190,   152,   156,   233,   234,
+     223,   223,   152,   183,   183,   152,   223,   152,   224,   224,
+     224,   234,   223,    18,   195,   195,   152,   155,   152,   152,
+     155,   155,   155,   155,   155,    15,   158,   177,   230,   155,
+     155,   155,   224,   158,   223,   155,   155,   155,   195,   195,
+     195,   223,   221,   158,   177,    39,   158,   155,   155,   155,
+     152,   221,    15,    15,   152,   223,   223,    15,   228,   223,
+      15,   223
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2378,26 +2391,26 @@
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 77:
+        case 81:
 #line 357 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[-1].String);
   ;}
     break;
 
-  case 78:
+  case 82:
 #line 360 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string(""); 
   ;}
     break;
 
-  case 86:
+  case 90:
 #line 367 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(""); ;}
     break;
 
-  case 93:
+  case 97:
 #line 372 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *(yyvsp[-1].String) += *(yyvsp[0].String); 
@@ -2406,27 +2419,27 @@
     ;}
     break;
 
-  case 94:
+  case 98:
 #line 377 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(""); ;}
     break;
 
-  case 95:
+  case 99:
 #line 382 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 96:
+  case 100:
 #line 383 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); (yyval.String) = (yyvsp[-1].String); ;}
     break;
 
-  case 97:
+  case 101:
 #line 386 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 98:
+  case 102:
 #line 387 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyvsp[-1].String)->insert(0, ", "); 
@@ -2436,7 +2449,7 @@
   ;}
     break;
 
-  case 99:
+  case 103:
 #line 395 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
@@ -2445,17 +2458,17 @@
   ;}
     break;
 
-  case 100:
+  case 104:
 #line 401 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 102:
+  case 106:
 #line 405 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 103:
+  case 107:
 #line 406 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
       (yyvsp[-1].String)->insert(0, ", ");
@@ -2466,7 +2479,7 @@
     ;}
     break;
 
-  case 105:
+  case 109:
 #line 416 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
       *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
@@ -2475,7 +2488,7 @@
     ;}
     break;
 
-  case 123:
+  case 127:
 #line 438 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type).newTy = (yyvsp[0].String); 
@@ -2483,7 +2496,7 @@
   ;}
     break;
 
-  case 124:
+  case 128:
 #line 442 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type).newTy = (yyvsp[0].String);
@@ -2491,14 +2504,14 @@
   ;}
     break;
 
-  case 125:
+  case 129:
 #line 446 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type) = (yyvsp[0].Type); 
   ;}
     break;
 
-  case 126:
+  case 130:
 #line 449 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                   // Type UpReference
     (yyvsp[0].String)->insert(0, "\\");
@@ -2507,7 +2520,7 @@
   ;}
     break;
 
-  case 127:
+  case 131:
 #line 454 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {           // Function derived type?
     *(yyvsp[-3].Type).newTy += "( " + *(yyvsp[-1].String) + " )";
@@ -2517,7 +2530,7 @@
   ;}
     break;
 
-  case 128:
+  case 132:
 #line 460 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {          // Sized array type?
     (yyvsp[-3].String)->insert(0,"[ ");
@@ -2529,7 +2542,7 @@
   ;}
     break;
 
-  case 129:
+  case 133:
 #line 468 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {          // Packed array type?
     (yyvsp[-3].String)->insert(0,"< ");
@@ -2541,7 +2554,7 @@
   ;}
     break;
 
-  case 130:
+  case 134:
 #line 476 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                        // Structure type?
     (yyvsp[-1].String)->insert(0, "{ ");
@@ -2551,7 +2564,7 @@
   ;}
     break;
 
-  case 131:
+  case 135:
 #line 482 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                                  // Empty structure type?
     (yyval.Type).newTy = new std::string("{}");
@@ -2559,7 +2572,7 @@
   ;}
     break;
 
-  case 132:
+  case 136:
 #line 486 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                             // Pointer type?
     *(yyvsp[-1].Type).newTy += '*';
@@ -2569,14 +2582,14 @@
   ;}
     break;
 
-  case 133:
+  case 137:
 #line 497 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].Type).newTy;
   ;}
     break;
 
-  case 134:
+  case 138:
 #line 500 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].Type).newTy;
@@ -2585,7 +2598,7 @@
   ;}
     break;
 
-  case 136:
+  case 140:
 #line 509 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", ...";
@@ -2594,21 +2607,21 @@
   ;}
     break;
 
-  case 137:
+  case 141:
 #line 514 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
-  case 138:
+  case 142:
 #line 517 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string();
   ;}
     break;
 
-  case 139:
+  case 143:
 #line 527 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { // Nonempty unsized arr
     (yyval.Const).type = (yyvsp[-3].Type);
@@ -2618,7 +2631,7 @@
   ;}
     break;
 
-  case 140:
+  case 144:
 #line 533 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
@@ -2627,7 +2640,7 @@
   ;}
     break;
 
-  case 141:
+  case 145:
 #line 538 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
@@ -2637,7 +2650,7 @@
   ;}
     break;
 
-  case 142:
+  case 146:
 #line 544 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { // Nonempty unsized arr
     (yyval.Const).type = (yyvsp[-3].Type);
@@ -2647,7 +2660,7 @@
   ;}
     break;
 
-  case 143:
+  case 147:
 #line 550 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-3].Type);
@@ -2657,7 +2670,7 @@
   ;}
     break;
 
-  case 144:
+  case 148:
 #line 556 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
@@ -2666,7 +2679,7 @@
   ;}
     break;
 
-  case 145:
+  case 149:
 #line 561 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2676,7 +2689,7 @@
   ;}
     break;
 
-  case 146:
+  case 150:
 #line 567 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2686,7 +2699,7 @@
   ;}
     break;
 
-  case 147:
+  case 151:
 #line 573 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2696,7 +2709,7 @@
   ;}
     break;
 
-  case 148:
+  case 152:
 #line 579 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2706,7 +2719,7 @@
   ;}
     break;
 
-  case 149:
+  case 153:
 #line 585 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2716,7 +2729,7 @@
   ;}
     break;
 
-  case 150:
+  case 154:
 #line 591 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {      // integral constants
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2726,7 +2739,7 @@
   ;}
     break;
 
-  case 151:
+  case 155:
 #line 597 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {            // integral constants
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2736,7 +2749,7 @@
   ;}
     break;
 
-  case 152:
+  case 156:
 #line 603 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                      // Boolean constants
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2746,7 +2759,7 @@
   ;}
     break;
 
-  case 153:
+  case 157:
 #line 609 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                     // Boolean constants
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2756,7 +2769,7 @@
   ;}
     break;
 
-  case 154:
+  case 158:
 #line 615 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                   // Float & Double constants
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2766,7 +2779,7 @@
   ;}
     break;
 
-  case 155:
+  case 159:
 #line 623 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string source = *(yyvsp[-3].Const).cnst;
@@ -2784,7 +2797,7 @@
   ;}
     break;
 
-  case 156:
+  case 160:
 #line 637 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-4].String) += "(" + *(yyvsp[-2].Const).cnst;
@@ -2800,7 +2813,7 @@
   ;}
     break;
 
-  case 157:
+  case 161:
 #line 649 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
@@ -2809,7 +2822,7 @@
   ;}
     break;
 
-  case 158:
+  case 162:
 #line 654 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* op = getDivRemOpcode(*(yyvsp[-5].String), (yyvsp[-3].Const).type); 
@@ -2819,7 +2832,7 @@
   ;}
     break;
 
-  case 159:
+  case 163:
 #line 660 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
@@ -2828,7 +2841,7 @@
   ;}
     break;
 
-  case 160:
+  case 164:
 #line 665 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
 #if UPGRADE_SETCOND_OPS
@@ -2840,7 +2853,7 @@
   ;}
     break;
 
-  case 161:
+  case 165:
 #line 673 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
@@ -2849,9 +2862,18 @@
   ;}
     break;
 
-  case 162:
+  case 166:
 #line 678 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
+    *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
+    delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
+    (yyval.String) = (yyvsp[-6].String);
+  ;}
+    break;
+
+  case 167:
+#line 683 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
     const char* shiftop = (yyvsp[-5].String)->c_str();
     if (*(yyvsp[-5].String) == "shr")
       shiftop = ((yyvsp[-3].Const).type.isUnsigned()) ? "lshr" : "ashr";
@@ -2861,8 +2883,8 @@
   ;}
     break;
 
-  case 163:
-#line 686 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 168:
+#line 691 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2870,8 +2892,8 @@
   ;}
     break;
 
-  case 164:
-#line 691 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 169:
+#line 696 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2879,8 +2901,8 @@
   ;}
     break;
 
-  case 165:
-#line 696 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 170:
+#line 701 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2888,8 +2910,8 @@
   ;}
     break;
 
-  case 166:
-#line 706 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 171:
+#line 711 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].Const).cnst;
     (yyvsp[0].Const).destroy();
@@ -2897,26 +2919,26 @@
   ;}
     break;
 
-  case 167:
-#line 711 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 172:
+#line 716 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(*(yyvsp[0].Const).cnst); (yyvsp[0].Const).destroy(); ;}
     break;
 
-  case 170:
-#line 726 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 175:
+#line 731 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
 ;}
     break;
 
-  case 171:
-#line 731 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 176:
+#line 736 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
-  case 172:
-#line 734 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 177:
+#line 739 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -2924,34 +2946,34 @@
   ;}
     break;
 
-  case 173:
-#line 739 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 178:
+#line 744 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "module asm " << " " << *(yyvsp[0].String) << "\n";
     (yyval.String) = 0;
   ;}
     break;
 
-  case 174:
-#line 743 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 179:
+#line 748 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "implementation\n";
     (yyval.String) = 0;
   ;}
     break;
 
-  case 175:
-#line 747 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 180:
+#line 752 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = 0; ;}
     break;
 
-  case 177:
-#line 749 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 182:
+#line 754 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "external"; ;}
     break;
 
-  case 178:
-#line 752 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 183:
+#line 757 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     EnumeratedTypes.push_back((yyvsp[0].Type));
     if (!(yyvsp[-2].String)->empty()) {
@@ -2966,8 +2988,8 @@
   ;}
     break;
 
-  case 179:
-#line 764 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 184:
+#line 769 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {       // Function prototypes can be in const pool
     *O << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -2975,8 +2997,8 @@
   ;}
     break;
 
-  case 180:
-#line 769 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 185:
+#line 774 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {  // Asm blocks can be in the const pool
     *O << *(yyvsp[-2].String) << " " << *(yyvsp[-1].String) << " " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-2].String); delete (yyvsp[-1].String); delete (yyvsp[0].String); 
@@ -2984,8 +3006,8 @@
   ;}
     break;
 
-  case 181:
-#line 774 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 186:
+#line 779 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty())
       *O << *(yyvsp[-4].String) << " = ";
@@ -2995,8 +3017,8 @@
   ;}
     break;
 
-  case 182:
-#line 781 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 187:
+#line 786 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty())
       *O << *(yyvsp[-4].String) << " = ";
@@ -3006,8 +3028,8 @@
   ;}
     break;
 
-  case 183:
-#line 788 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 188:
+#line 793 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty())
       *O << *(yyvsp[-4].String) << " = ";
@@ -3017,8 +3039,8 @@
   ;}
     break;
 
-  case 184:
-#line 795 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 189:
+#line 800 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty())
       *O << *(yyvsp[-4].String) << " = ";
@@ -3028,8 +3050,8 @@
   ;}
     break;
 
-  case 185:
-#line 802 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 190:
+#line 807 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *O << *(yyvsp[-1].String) << " " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-1].String); delete (yyvsp[0].String);
@@ -3037,8 +3059,8 @@
   ;}
     break;
 
-  case 186:
-#line 807 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 191:
+#line 812 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[-2].String) << " = " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-2].String); delete (yyvsp[0].String);
@@ -3046,15 +3068,15 @@
   ;}
     break;
 
-  case 187:
-#line 812 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 192:
+#line 817 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.String) = 0;
   ;}
     break;
 
-  case 191:
-#line 822 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 196:
+#line 827 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3062,8 +3084,8 @@
   ;}
     break;
 
-  case 192:
-#line 827 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 197:
+#line 832 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     if (*(yyvsp[0].String) == "64")
@@ -3073,8 +3095,8 @@
   ;}
     break;
 
-  case 193:
-#line 834 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 198:
+#line 839 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3082,8 +3104,8 @@
   ;}
     break;
 
-  case 194:
-#line 839 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 199:
+#line 844 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3091,8 +3113,8 @@
   ;}
     break;
 
-  case 195:
-#line 846 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 200:
+#line 851 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-1].String)->insert(0, "[ ");
     *(yyvsp[-1].String) += " ]";
@@ -3100,8 +3122,8 @@
   ;}
     break;
 
-  case 196:
-#line 853 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 201:
+#line 858 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3109,20 +3131,20 @@
   ;}
     break;
 
-  case 198:
-#line 859 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 203:
+#line 864 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string();
   ;}
     break;
 
-  case 202:
-#line 868 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 207:
+#line 873 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 203:
-#line 870 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 208:
+#line 875 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
   (yyval.String) = (yyvsp[-1].Type).newTy;
   if (!(yyvsp[0].String)->empty())
@@ -3131,30 +3153,30 @@
 ;}
     break;
 
-  case 204:
-#line 877 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 209:
+#line 882 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
   ;}
     break;
 
-  case 205:
-#line 881 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 210:
+#line 886 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
-  case 206:
-#line 885 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 211:
+#line 890 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
-  case 207:
-#line 888 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 212:
+#line 893 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", ...";
     (yyval.String) = (yyvsp[-2].String);
@@ -3162,20 +3184,20 @@
   ;}
     break;
 
-  case 208:
-#line 893 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 213:
+#line 898 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
-  case 209:
-#line 896 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 214:
+#line 901 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 210:
-#line 899 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 215:
+#line 904 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-7].String)->empty()) {
       *(yyvsp[-7].String) += " ";
@@ -3196,18 +3218,18 @@
   ;}
     break;
 
-  case 211:
-#line 918 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 216:
+#line 923 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("{"); delete (yyvsp[0].String); ;}
     break;
 
-  case 212:
-#line 919 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 217:
+#line 924 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string ("{"); ;}
     break;
 
-  case 213:
-#line 921 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 218:
+#line 926 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
   if (!(yyvsp[-2].String)->empty()) {
     *O << *(yyvsp[-2].String) << " ";
@@ -3218,18 +3240,18 @@
 ;}
     break;
 
-  case 214:
-#line 930 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 219:
+#line 935 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("}"); delete (yyvsp[0].String); ;}
     break;
 
-  case 215:
-#line 931 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 220:
+#line 936 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("}"); ;}
     break;
 
-  case 216:
-#line 933 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 221:
+#line 938 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
   if ((yyvsp[-1].String))
     *O << *(yyvsp[-1].String);
@@ -3238,13 +3260,13 @@
 ;}
     break;
 
-  case 217:
-#line 941 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 222:
+#line 946 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 220:
-#line 947 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 225:
+#line 952 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     if (!(yyvsp[-1].String)->empty())
       *(yyvsp[-2].String) += " " + *(yyvsp[-1].String);
@@ -3255,13 +3277,13 @@
   ;}
     break;
 
-  case 221:
-#line 960 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 226:
+#line 965 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 231:
-#line 966 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 236:
+#line 971 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyvsp[-1].String)->insert(0, "<");
     *(yyvsp[-1].String) += ">";
@@ -3269,8 +3291,8 @@
   ;}
     break;
 
-  case 233:
-#line 972 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 238:
+#line 977 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-3].String)->empty()) {
       *(yyvsp[-4].String) += " " + *(yyvsp[-3].String);
@@ -3281,8 +3303,8 @@
   ;}
     break;
 
-  case 236:
-#line 985 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 241:
+#line 990 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value).val = (yyvsp[0].String);
     (yyval.Value).constant = false;
@@ -3291,8 +3313,8 @@
   ;}
     break;
 
-  case 237:
-#line 991 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 242:
+#line 996 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value).val = (yyvsp[0].String);
     (yyval.Value).constant = true;
@@ -3301,8 +3323,8 @@
   ;}
     break;
 
-  case 238:
-#line 1002 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 243:
+#line 1007 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value) = (yyvsp[0].Value);
     (yyval.Value).type = (yyvsp[-1].Type);
@@ -3310,29 +3332,29 @@
   ;}
     break;
 
-  case 239:
-#line 1008 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 244:
+#line 1013 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
-  case 240:
-#line 1011 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 245:
+#line 1016 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { // Do not allow functions with 0 basic blocks   
     (yyval.String) = 0;
   ;}
     break;
 
-  case 241:
-#line 1019 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 246:
+#line 1024 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
-  case 242:
-#line 1023 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 247:
+#line 1028 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -3340,15 +3362,15 @@
   ;}
     break;
 
-  case 243:
-#line 1028 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 248:
+#line 1033 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
-  case 244:
-#line 1031 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 249:
+#line 1036 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -3356,13 +3378,13 @@
   ;}
     break;
 
-  case 246:
-#line 1037 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 251:
+#line 1042 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "unwind"; ;}
     break;
 
-  case 247:
-#line 1039 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 252:
+#line 1044 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {              // Return with a result...
     *O << "    " << *(yyvsp[-1].String) << " " << *(yyvsp[0].Value).val << "\n";
     delete (yyvsp[-1].String); (yyvsp[0].Value).destroy();
@@ -3370,8 +3392,8 @@
   ;}
     break;
 
-  case 248:
-#line 1044 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 253:
+#line 1049 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                                       // Return with no result...
     *O << "    " << *(yyvsp[-1].String) << " " << *(yyvsp[0].Type).newTy << "\n";
     delete (yyvsp[-1].String); (yyvsp[0].Type).destroy();
@@ -3379,8 +3401,8 @@
   ;}
     break;
 
-  case 249:
-#line 1049 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 254:
+#line 1054 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                         // Unconditional Branch...
     *O << "    " << *(yyvsp[-2].String) << " " << *(yyvsp[-1].Type).newTy << " " << *(yyvsp[0].Value).val << "\n";
     delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy();
@@ -3388,8 +3410,8 @@
   ;}
     break;
 
-  case 250:
-#line 1054 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 255:
+#line 1059 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {  
     *O << "    " << *(yyvsp[-8].String) << " " << *(yyvsp[-7].Type).newTy << " " << *(yyvsp[-6].Value).val << ", " 
        << *(yyvsp[-4].Type).newTy << " " << *(yyvsp[-3].Value).val << ", " << *(yyvsp[-1].Type).newTy << " " 
@@ -3400,8 +3422,8 @@
   ;}
     break;
 
-  case 251:
-#line 1062 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 256:
+#line 1067 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[-8].String) << " " << *(yyvsp[-7].Type).newTy << " " << *(yyvsp[-6].Value).val << ", " 
        << *(yyvsp[-4].Type).newTy << " " << *(yyvsp[-3].Value).val << " [" << *(yyvsp[-1].String) << " ]\n";
@@ -3411,8 +3433,8 @@
   ;}
     break;
 
-  case 252:
-#line 1069 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 257:
+#line 1074 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[-7].String) << " " << *(yyvsp[-6].Type).newTy << " " << *(yyvsp[-5].Value).val << ", " 
        << *(yyvsp[-3].Type).newTy << " " << *(yyvsp[-2].Value).val << "[]\n";
@@ -3421,8 +3443,8 @@
   ;}
     break;
 
-  case 253:
-#line 1076 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 258:
+#line 1081 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    ";
     if (!(yyvsp[-13].String)->empty())
@@ -3444,8 +3466,8 @@
   ;}
     break;
 
-  case 254:
-#line 1095 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 259:
+#line 1100 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -3453,8 +3475,8 @@
   ;}
     break;
 
-  case 255:
-#line 1100 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 260:
+#line 1105 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -3462,8 +3484,8 @@
   ;}
     break;
 
-  case 256:
-#line 1106 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 261:
+#line 1111 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + " " + *(yyvsp[-3].String) + ", " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val;
     (yyvsp[-4].Type).destroy(); delete (yyvsp[-3].String); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy();
@@ -3471,8 +3493,8 @@
   ;}
     break;
 
-  case 257:
-#line 1111 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 262:
+#line 1116 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-3].String)->insert(0, *(yyvsp[-4].Type).newTy + " " );
     *(yyvsp[-3].String) += ", " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val;
@@ -3481,8 +3503,8 @@
   ;}
     break;
 
-  case 258:
-#line 1119 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 263:
+#line 1124 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-1].String)->empty())
       *(yyvsp[-1].String) += " = ";
@@ -3492,8 +3514,8 @@
   ;}
     break;
 
-  case 259:
-#line 1128 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 264:
+#line 1133 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {    // Used for PHI nodes
     (yyvsp[-3].Value).val->insert(0, *(yyvsp[-5].Type).newTy + "[");
     *(yyvsp[-3].Value).val += "," + *(yyvsp[-1].Value).val + "]";
@@ -3503,8 +3525,8 @@
   ;}
     break;
 
-  case 260:
-#line 1135 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 265:
+#line 1140 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += ", [" + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + "]";
     (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
@@ -3512,34 +3534,34 @@
   ;}
     break;
 
-  case 261:
-#line 1143 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 266:
+#line 1148 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.ValList) = new ValueList();
     (yyval.ValList)->push_back((yyvsp[0].Value));
   ;}
     break;
 
-  case 262:
-#line 1147 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 267:
+#line 1152 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-2].ValList)->push_back((yyvsp[0].Value));
     (yyval.ValList) = (yyvsp[-2].ValList);
   ;}
     break;
 
-  case 263:
-#line 1154 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 268:
+#line 1159 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = (yyvsp[0].ValList); ;}
     break;
 
-  case 264:
-#line 1155 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 269:
+#line 1160 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = new ValueList(); ;}
     break;
 
-  case 265:
-#line 1159 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 270:
+#line 1164 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3547,8 +3569,8 @@
   ;}
     break;
 
-  case 267:
-#line 1167 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 272:
+#line 1172 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* op = getDivRemOpcode(*(yyvsp[-4].String), (yyvsp[-3].Type)); 
     (yyval.String) = new std::string(op);
@@ -3557,8 +3579,8 @@
   ;}
     break;
 
-  case 268:
-#line 1173 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 273:
+#line 1178 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-4].String) += " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-3].Type).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3566,8 +3588,8 @@
   ;}
     break;
 
-  case 269:
-#line 1178 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 274:
+#line 1183 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
 #if UPGRADE_SETCOND_OPS
     *(yyvsp[-4].String) = getCompareOp(*(yyvsp[-4].String), (yyvsp[-3].Type));
@@ -3578,8 +3600,8 @@
   ;}
     break;
 
-  case 270:
-#line 1186 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 275:
+#line 1191 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += " " + *(yyvsp[-5].String) + " " + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + ")";
     delete (yyvsp[-5].String); (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
@@ -3587,8 +3609,17 @@
   ;}
     break;
 
-  case 271:
-#line 1191 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 276:
+#line 1196 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-6].String) += " " + *(yyvsp[-5].String) + " " + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + ")";
+    delete (yyvsp[-5].String); (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
+    (yyval.String) = (yyvsp[-6].String);
+  ;}
+    break;
+
+  case 277:
+#line 1201 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
     (yyvsp[0].Value).destroy();
@@ -3596,8 +3627,8 @@
   ;}
     break;
 
-  case 272:
-#line 1196 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 278:
+#line 1206 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* shiftop = (yyvsp[-3].String)->c_str();
     if (*(yyvsp[-3].String) == "shr")
@@ -3608,8 +3639,8 @@
   ;}
     break;
 
-  case 273:
-#line 1204 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 279:
+#line 1214 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string source = *(yyvsp[-2].Value).val;
     TypeInfo SrcTy = (yyvsp[-2].Value).type;
@@ -3626,8 +3657,8 @@
   ;}
     break;
 
-  case 274:
-#line 1218 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 280:
+#line 1228 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3635,8 +3666,8 @@
   ;}
     break;
 
-  case 275:
-#line 1223 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 281:
+#line 1233 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Type).newTy;
     (yyvsp[-2].Value).destroy(); (yyvsp[0].Type).destroy();
@@ -3644,8 +3675,8 @@
   ;}
     break;
 
-  case 276:
-#line 1228 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 282:
+#line 1238 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3653,8 +3684,8 @@
   ;}
     break;
 
-  case 277:
-#line 1233 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 283:
+#line 1243 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3662,8 +3693,8 @@
   ;}
     break;
 
-  case 278:
-#line 1238 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 284:
+#line 1248 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3671,8 +3702,8 @@
   ;}
     break;
 
-  case 279:
-#line 1243 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 285:
+#line 1253 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3680,8 +3711,8 @@
   ;}
     break;
 
-  case 280:
-#line 1248 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 286:
+#line 1258 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-5].String)->empty())
       *(yyvsp[-6].String) += " " + *(yyvsp[-5].String);
@@ -3701,23 +3732,23 @@
   ;}
     break;
 
-  case 282:
-#line 1270 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 288:
+#line 1280 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = (yyvsp[0].ValList); ;}
     break;
 
-  case 283:
-#line 1271 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 289:
+#line 1281 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {  (yyval.ValList) = new ValueList(); ;}
     break;
 
-  case 285:
-#line 1276 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 291:
+#line 1286 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 286:
-#line 1279 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 292:
+#line 1289 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy;
     if (!(yyvsp[0].String)->empty())
@@ -3727,8 +3758,8 @@
   ;}
     break;
 
-  case 287:
-#line 1286 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 293:
+#line 1296 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + ", " + *(yyvsp[-2].Type).newTy + " " + *(yyvsp[-1].Value).val;
     if (!(yyvsp[0].String)->empty())
@@ -3738,8 +3769,8 @@
   ;}
     break;
 
-  case 288:
-#line 1293 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 294:
+#line 1303 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy;
     if (!(yyvsp[0].String)->empty())
@@ -3749,8 +3780,8 @@
   ;}
     break;
 
-  case 289:
-#line 1300 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 295:
+#line 1310 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + ", " + *(yyvsp[-2].Type).newTy + " " + *(yyvsp[-1].Value).val;
     if (!(yyvsp[0].String)->empty())
@@ -3760,8 +3791,8 @@
   ;}
     break;
 
-  case 290:
-#line 1307 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 296:
+#line 1317 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
     (yyvsp[0].Value).destroy();
@@ -3769,8 +3800,8 @@
   ;}
     break;
 
-  case 291:
-#line 1312 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 297:
+#line 1322 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-3].String)->empty())
       *(yyvsp[-3].String) += " ";
@@ -3780,8 +3811,8 @@
   ;}
     break;
 
-  case 292:
-#line 1319 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 298:
+#line 1329 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-5].String)->empty())
       *(yyvsp[-5].String) += " ";
@@ -3791,8 +3822,8 @@
   ;}
     break;
 
-  case 293:
-#line 1326 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 299:
+#line 1336 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     // Upgrade the indices
     for (unsigned i = 0; i < (yyvsp[0].ValList)->size(); ++i) {
@@ -3823,7 +3854,7 @@
     }
 
 /* Line 1126 of yacc.c.  */
-#line 3827 "UpgradeParser.tab.c"
+#line 3858 "UpgradeParser.tab.c"
 
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -4091,7 +4122,7 @@
 }
 
 
-#line 1350 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1360 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
 
 
 int yyerror(const char *ErrorMsg) {


Index: llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs
diff -u llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.16 llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.17
--- llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.16	Sat Dec  2 21:16:48 2006
+++ llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs	Sun Dec  3 01:10:26 2006
@@ -813,16 +813,16 @@
 /* YYFINAL -- State number of the termination state. */
 #define YYFINAL  4
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1464
+#define YYLAST   1483
 
 /* YYNTOKENS -- Number of terminals. */
 #define YYNTOKENS  165
 /* YYNNTS -- Number of nonterminals. */
 #define YYNNTS  75
 /* YYNRULES -- Number of rules. */
-#define YYNRULES  293
+#define YYNRULES  299
 /* YYNRULES -- Number of states. */
-#define YYNSTATES  564
+#define YYNSTATES  582
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -889,29 +889,29 @@
       79,    81,    83,    85,    87,    89,    91,    93,    95,    97,
       99,   101,   103,   105,   107,   109,   111,   113,   115,   117,
      119,   121,   123,   125,   127,   129,   131,   133,   135,   137,
-     139,   141,   143,   145,   147,   149,   151,   153,   156,   157,
-     159,   161,   163,   165,   167,   169,   171,   172,   174,   176,
-     178,   180,   182,   184,   187,   188,   189,   192,   193,   197,
-     200,   201,   203,   204,   208,   210,   213,   215,   217,   219,
+     139,   141,   143,   145,   147,   149,   151,   153,   155,   157,
+     159,   161,   164,   165,   167,   169,   171,   173,   175,   177,
+     179,   180,   182,   184,   186,   188,   190,   192,   195,   196,
+     197,   200,   201,   205,   208,   209,   211,   212,   216,   218,
      221,   223,   225,   227,   229,   231,   233,   235,   237,   239,
-     241,   243,   245,   247,   249,   251,   253,   256,   261,   267,
-     273,   277,   280,   283,   285,   289,   291,   295,   297,   298,
-     303,   307,   311,   316,   321,   325,   328,   331,   334,   337,
-     340,   343,   346,   349,   352,   355,   362,   368,   377,   384,
-     391,   398,   406,   413,   420,   429,   438,   442,   444,   446,
-     448,   450,   453,   456,   461,   464,   466,   468,   470,   475,
-     478,   483,   490,   497,   504,   511,   515,   520,   521,   523,
-     525,   527,   531,   535,   539,   543,   547,   551,   553,   554,
-     556,   558,   560,   561,   564,   568,   570,   572,   576,   578,
-     579,   588,   590,   592,   596,   598,   600,   604,   605,   607,
-     609,   613,   614,   616,   618,   620,   622,   624,   626,   628,
-     630,   632,   636,   638,   644,   646,   648,   650,   652,   655,
-     658,   660,   663,   666,   667,   669,   671,   673,   676,   679,
-     683,   693,   703,   712,   727,   729,   731,   738,   744,   747,
-     754,   762,   764,   768,   770,   771,   774,   776,   782,   788,
-     794,   802,   805,   810,   815,   822,   827,   832,   839,   846,
-     849,   857,   859,   862,   863,   865,   866,   870,   877,   881,
-     888,   891,   896,   903
+     241,   243,   245,   247,   249,   251,   253,   255,   257,   259,
+     261,   264,   269,   275,   281,   285,   288,   291,   293,   297,
+     299,   303,   305,   306,   311,   315,   319,   324,   329,   333,
+     336,   339,   342,   345,   348,   351,   354,   357,   360,   363,
+     370,   376,   385,   392,   399,   406,   414,   422,   429,   436,
+     445,   454,   458,   460,   462,   464,   466,   469,   472,   477,
+     480,   482,   484,   486,   491,   494,   499,   506,   513,   520,
+     527,   531,   536,   537,   539,   541,   543,   547,   551,   555,
+     559,   563,   567,   569,   570,   572,   574,   576,   577,   580,
+     584,   586,   588,   592,   594,   595,   604,   606,   608,   612,
+     614,   616,   620,   621,   623,   625,   629,   630,   632,   634,
+     636,   638,   640,   642,   644,   646,   648,   652,   654,   660,
+     662,   664,   666,   668,   671,   674,   676,   679,   682,   683,
+     685,   687,   689,   692,   695,   699,   709,   719,   728,   743,
+     745,   747,   754,   760,   763,   770,   778,   780,   784,   786,
+     787,   790,   792,   798,   804,   810,   818,   826,   829,   834,
+     839,   846,   851,   856,   863,   870,   873,   881,   883,   886,
+     887,   889,   890,   894,   901,   905,   912,   915,   920,   927
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
@@ -922,92 +922,95 @@
       -1,    85,    -1,    86,    -1,    87,    -1,    88,    -1,    89,
       -1,    90,    -1,    91,    -1,    92,    -1,    93,    -1,    94,
       -1,    95,    -1,    96,    -1,    97,    -1,    98,    -1,    99,
-      -1,   100,    -1,   101,    -1,   102,    -1,   103,    -1,   104,
-      -1,   105,    -1,   106,    -1,   107,    -1,   118,    -1,   119,
-      -1,   120,    -1,   121,    -1,   108,    -1,   109,    -1,   110,
-      -1,   111,    -1,   112,    -1,   113,    -1,   114,    -1,   115,
-      -1,   116,    -1,   117,    -1,   130,    -1,   131,    -1,   132,
-      -1,   133,    -1,   139,    -1,   140,    -1,   141,    -1,   142,
-      -1,   143,    -1,   144,    -1,   145,    -1,   146,    -1,   147,
-      -1,   148,    -1,   149,    -1,   150,    -1,   138,    -1,    11,
-      -1,     9,    -1,     7,    -1,     5,    -1,    12,    -1,    10,
-      -1,     8,    -1,     6,    -1,   175,    -1,   176,    -1,    13,
-      -1,    14,    -1,   208,   151,    -1,    -1,    42,    -1,    43,
-      -1,    44,    -1,    48,    -1,    45,    -1,    46,    -1,    47,
-      -1,    -1,    66,    -1,    67,    -1,    68,    -1,    69,    -1,
-      70,    -1,    71,    -1,    65,    18,    -1,    -1,    -1,    57,
-      18,    -1,    -1,   152,    57,    18,    -1,    37,    30,    -1,
-      -1,   184,    -1,    -1,   152,   187,   186,    -1,   184,    -1,
-      57,    18,    -1,   190,    -1,     3,    -1,   192,    -1,     3,
-      -1,   192,    -1,     4,    -1,     5,    -1,     6,    -1,     7,
-      -1,     8,    -1,     9,    -1,    10,    -1,    11,    -1,    12,
-      -1,    13,    -1,    14,    -1,    15,    -1,    16,    -1,   222,
-      -1,   191,    -1,   153,    18,    -1,   189,   154,   194,   155,
-      -1,   156,    18,   157,   192,   158,    -1,   159,    18,   157,
-     192,   160,    -1,   161,   193,   162,    -1,   161,   162,    -1,
-     192,   163,    -1,   192,    -1,   193,   152,   192,    -1,   193,
-      -1,   193,   152,    40,    -1,    40,    -1,    -1,   190,   156,
-     197,   158,    -1,   190,   156,   158,    -1,   190,   164,    30,
-      -1,   190,   159,   197,   160,    -1,   190,   161,   197,   162,
-      -1,   190,   161,   162,    -1,   190,    22,    -1,   190,    23,
-      -1,   190,   222,    -1,   190,   196,    -1,   190,    24,    -1,
-     175,   167,    -1,   176,    18,    -1,     4,    25,    -1,     4,
-      26,    -1,   178,    21,    -1,   174,   154,   195,    39,   190,
-     155,    -1,   127,   154,   195,   237,   155,    -1,   129,   154,
-     195,   152,   195,   152,   195,   155,    -1,   168,   154,   195,
-     152,   195,   155,    -1,   169,   154,   195,   152,   195,   155,
-      -1,   170,   154,   195,   152,   195,   155,    -1,   171,   172,
-     154,   195,   152,   195,   155,    -1,   173,   154,   195,   152,
-     195,   155,    -1,   135,   154,   195,   152,   195,   155,    -1,
-     136,   154,   195,   152,   195,   152,   195,   155,    -1,   137,
-     154,   195,   152,   195,   152,   195,   155,    -1,   197,   152,
-     195,    -1,   195,    -1,    35,    -1,    36,    -1,   200,    -1,
-     200,   217,    -1,   200,   219,    -1,   200,    63,    62,   203,
-      -1,   200,    31,    -1,   202,    -1,    50,    -1,    58,    -1,
-     202,   179,    27,   188,    -1,   202,   219,    -1,   202,    63,
-      62,   203,    -1,   202,   179,   180,   198,   195,   186,    -1,
-     202,   179,   201,   198,   190,   186,    -1,   202,   179,    45,
-     198,   190,   186,    -1,   202,   179,    47,   198,   190,   186,
-      -1,   202,    51,   205,    -1,   202,    59,   151,   206,    -1,
-      -1,    30,    -1,    56,    -1,    55,    -1,    53,   151,   204,
-      -1,    54,   151,    18,    -1,    52,   151,    30,    -1,    72,
-     151,    30,    -1,   156,   207,   158,    -1,   207,   152,    30,
-      -1,    30,    -1,    -1,    28,    -1,    30,    -1,   208,    -1,
-      -1,   190,   209,    -1,   211,   152,   210,    -1,   210,    -1,
-     211,    -1,   211,   152,    40,    -1,    40,    -1,    -1,   181,
-     188,   208,   154,   212,   155,   185,   182,    -1,    32,    -1,
-     161,    -1,   180,   213,   214,    -1,    33,    -1,   162,    -1,
-     215,   225,   216,    -1,    -1,    45,    -1,    47,    -1,    34,
-     218,   213,    -1,    -1,    64,    -1,    17,    -1,    18,    -1,
-      21,    -1,    25,    -1,    26,    -1,    22,    -1,    23,    -1,
-      24,    -1,   159,   197,   160,    -1,   196,    -1,    62,   220,
-      30,   152,    30,    -1,   166,    -1,   208,    -1,   222,    -1,
-     221,    -1,   190,   223,    -1,   225,   226,    -1,   226,    -1,
-     227,   229,    -1,   227,   231,    -1,    -1,    29,    -1,    78,
-      -1,    77,    -1,    73,   224,    -1,    73,     3,    -1,    74,
-      15,   223,    -1,    74,     4,   223,   152,    15,   223,   152,
-      15,   223,    -1,    75,   177,   223,   152,    15,   223,   156,
-     230,   158,    -1,    75,   177,   223,   152,    15,   223,   156,
-     158,    -1,   179,    76,   181,   188,   223,   154,   234,   155,
-      39,    15,   223,   228,    15,   223,    -1,   228,    -1,    79,
-      -1,   230,   177,   221,   152,    15,   223,    -1,   177,   221,
-     152,    15,   223,    -1,   179,   236,    -1,   190,   156,   223,
-     152,   223,   158,    -1,   232,   152,   156,   223,   152,   223,
-     158,    -1,   224,    -1,   233,   152,   224,    -1,   233,    -1,
-      -1,    61,    60,    -1,    60,    -1,   168,   190,   223,   152,
-     223,    -1,   169,   190,   223,   152,   223,    -1,   170,   190,
-     223,   152,   223,    -1,   171,   172,   190,   223,   152,   223,
-     155,    -1,    49,   224,    -1,   173,   224,   152,   224,    -1,
-     174,   224,    39,   190,    -1,   129,   224,   152,   224,   152,
-     224,    -1,   134,   224,   152,   190,    -1,   135,   224,   152,
-     224,    -1,   136,   224,   152,   224,   152,   224,    -1,   137,
-     224,   152,   224,   152,   224,    -1,   128,   232,    -1,   235,
-     181,   188,   223,   154,   234,   155,    -1,   239,    -1,   152,
-     233,    -1,    -1,    38,    -1,    -1,   122,   190,   183,    -1,
-     122,   190,   152,    10,   223,   183,    -1,   123,   190,   183,
-      -1,   123,   190,   152,    10,   223,   183,    -1,   124,   224,
-      -1,   238,   125,   190,   223,    -1,   238,   126,   224,   152,
-     190,   223,    -1,   127,   190,   223,   237,    -1
+      -1,   102,    -1,   103,    -1,   104,    -1,   105,    -1,   106,
+      -1,   107,    -1,   118,    -1,   119,    -1,   120,    -1,   121,
+      -1,   108,    -1,   109,    -1,   110,    -1,   111,    -1,   112,
+      -1,   113,    -1,   114,    -1,   115,    -1,   116,    -1,   117,
+      -1,   118,    -1,   119,    -1,   120,    -1,   121,    -1,    25,
+      -1,    26,    -1,   130,    -1,   131,    -1,   132,    -1,   133,
+      -1,   139,    -1,   140,    -1,   141,    -1,   142,    -1,   143,
+      -1,   144,    -1,   145,    -1,   146,    -1,   147,    -1,   148,
+      -1,   149,    -1,   150,    -1,   138,    -1,    11,    -1,     9,
+      -1,     7,    -1,     5,    -1,    12,    -1,    10,    -1,     8,
+      -1,     6,    -1,   175,    -1,   176,    -1,    13,    -1,    14,
+      -1,   208,   151,    -1,    -1,    42,    -1,    43,    -1,    44,
+      -1,    48,    -1,    45,    -1,    46,    -1,    47,    -1,    -1,
+      66,    -1,    67,    -1,    68,    -1,    69,    -1,    70,    -1,
+      71,    -1,    65,    18,    -1,    -1,    -1,    57,    18,    -1,
+      -1,   152,    57,    18,    -1,    37,    30,    -1,    -1,   184,
+      -1,    -1,   152,   187,   186,    -1,   184,    -1,    57,    18,
+      -1,   190,    -1,     3,    -1,   192,    -1,     3,    -1,   192,
+      -1,     4,    -1,     5,    -1,     6,    -1,     7,    -1,     8,
+      -1,     9,    -1,    10,    -1,    11,    -1,    12,    -1,    13,
+      -1,    14,    -1,    15,    -1,    16,    -1,   222,    -1,   191,
+      -1,   153,    18,    -1,   189,   154,   194,   155,    -1,   156,
+      18,   157,   192,   158,    -1,   159,    18,   157,   192,   160,
+      -1,   161,   193,   162,    -1,   161,   162,    -1,   192,   163,
+      -1,   192,    -1,   193,   152,   192,    -1,   193,    -1,   193,
+     152,    40,    -1,    40,    -1,    -1,   190,   156,   197,   158,
+      -1,   190,   156,   158,    -1,   190,   164,    30,    -1,   190,
+     159,   197,   160,    -1,   190,   161,   197,   162,    -1,   190,
+     161,   162,    -1,   190,    22,    -1,   190,    23,    -1,   190,
+     222,    -1,   190,   196,    -1,   190,    24,    -1,   175,   167,
+      -1,   176,    18,    -1,     4,    25,    -1,     4,    26,    -1,
+     178,    21,    -1,   174,   154,   195,    39,   190,   155,    -1,
+     127,   154,   195,   237,   155,    -1,   129,   154,   195,   152,
+     195,   152,   195,   155,    -1,   168,   154,   195,   152,   195,
+     155,    -1,   169,   154,   195,   152,   195,   155,    -1,   170,
+     154,   195,   152,   195,   155,    -1,   100,   171,   154,   195,
+     152,   195,   155,    -1,   101,   172,   154,   195,   152,   195,
+     155,    -1,   173,   154,   195,   152,   195,   155,    -1,   135,
+     154,   195,   152,   195,   155,    -1,   136,   154,   195,   152,
+     195,   152,   195,   155,    -1,   137,   154,   195,   152,   195,
+     152,   195,   155,    -1,   197,   152,   195,    -1,   195,    -1,
+      35,    -1,    36,    -1,   200,    -1,   200,   217,    -1,   200,
+     219,    -1,   200,    63,    62,   203,    -1,   200,    31,    -1,
+     202,    -1,    50,    -1,    58,    -1,   202,   179,    27,   188,
+      -1,   202,   219,    -1,   202,    63,    62,   203,    -1,   202,
+     179,   180,   198,   195,   186,    -1,   202,   179,   201,   198,
+     190,   186,    -1,   202,   179,    45,   198,   190,   186,    -1,
+     202,   179,    47,   198,   190,   186,    -1,   202,    51,   205,
+      -1,   202,    59,   151,   206,    -1,    -1,    30,    -1,    56,
+      -1,    55,    -1,    53,   151,   204,    -1,    54,   151,    18,
+      -1,    52,   151,    30,    -1,    72,   151,    30,    -1,   156,
+     207,   158,    -1,   207,   152,    30,    -1,    30,    -1,    -1,
+      28,    -1,    30,    -1,   208,    -1,    -1,   190,   209,    -1,
+     211,   152,   210,    -1,   210,    -1,   211,    -1,   211,   152,
+      40,    -1,    40,    -1,    -1,   181,   188,   208,   154,   212,
+     155,   185,   182,    -1,    32,    -1,   161,    -1,   180,   213,
+     214,    -1,    33,    -1,   162,    -1,   215,   225,   216,    -1,
+      -1,    45,    -1,    47,    -1,    34,   218,   213,    -1,    -1,
+      64,    -1,    17,    -1,    18,    -1,    21,    -1,    25,    -1,
+      26,    -1,    22,    -1,    23,    -1,    24,    -1,   159,   197,
+     160,    -1,   196,    -1,    62,   220,    30,   152,    30,    -1,
+     166,    -1,   208,    -1,   222,    -1,   221,    -1,   190,   223,
+      -1,   225,   226,    -1,   226,    -1,   227,   229,    -1,   227,
+     231,    -1,    -1,    29,    -1,    78,    -1,    77,    -1,    73,
+     224,    -1,    73,     3,    -1,    74,    15,   223,    -1,    74,
+       4,   223,   152,    15,   223,   152,    15,   223,    -1,    75,
+     177,   223,   152,    15,   223,   156,   230,   158,    -1,    75,
+     177,   223,   152,    15,   223,   156,   158,    -1,   179,    76,
+     181,   188,   223,   154,   234,   155,    39,    15,   223,   228,
+      15,   223,    -1,   228,    -1,    79,    -1,   230,   177,   221,
+     152,    15,   223,    -1,   177,   221,   152,    15,   223,    -1,
+     179,   236,    -1,   190,   156,   223,   152,   223,   158,    -1,
+     232,   152,   156,   223,   152,   223,   158,    -1,   224,    -1,
+     233,   152,   224,    -1,   233,    -1,    -1,    61,    60,    -1,
+      60,    -1,   168,   190,   223,   152,   223,    -1,   169,   190,
+     223,   152,   223,    -1,   170,   190,   223,   152,   223,    -1,
+     100,   171,   190,   223,   152,   223,   155,    -1,   101,   172,
+     190,   223,   152,   223,   155,    -1,    49,   224,    -1,   173,
+     224,   152,   224,    -1,   174,   224,    39,   190,    -1,   129,
+     224,   152,   224,   152,   224,    -1,   134,   224,   152,   190,
+      -1,   135,   224,   152,   224,    -1,   136,   224,   152,   224,
+     152,   224,    -1,   137,   224,   152,   224,   152,   224,    -1,
+     128,   232,    -1,   235,   181,   188,   223,   154,   234,   155,
+      -1,   239,    -1,   152,   233,    -1,    -1,    38,    -1,    -1,
+     122,   190,   183,    -1,   122,   190,   152,    10,   223,   183,
+      -1,   123,   190,   183,    -1,   123,   190,   152,    10,   223,
+     183,    -1,   124,   224,    -1,   238,   125,   190,   223,    -1,
+     238,   126,   224,   152,   190,   223,    -1,   127,   190,   223,
+     237,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -1015,34 +1018,34 @@
 {
        0,   332,   332,   332,   333,   333,   337,   337,   337,   337,
      337,   337,   337,   338,   338,   338,   338,   339,   339,   339,
-     340,   340,   340,   340,   340,   340,   341,   341,   342,   342,
-     342,   342,   342,   342,   342,   342,   342,   342,   343,   343,
-     343,   343,   343,   343,   343,   343,   343,   343,   344,   344,
-     344,   344,   345,   345,   345,   345,   345,   345,   345,   346,
-     346,   346,   346,   346,   346,   351,   351,   351,   351,   352,
-     352,   352,   352,   353,   353,   354,   354,   357,   360,   365,
-     365,   365,   365,   365,   365,   366,   367,   370,   370,   370,
-     370,   370,   371,   372,   377,   382,   383,   386,   387,   395,
-     401,   402,   405,   406,   415,   416,   429,   429,   430,   430,
-     431,   435,   435,   435,   435,   435,   435,   435,   436,   436,
-     436,   436,   436,   438,   442,   446,   449,   454,   460,   468,
-     476,   482,   486,   497,   500,   508,   509,   514,   517,   527,
-     533,   538,   544,   550,   556,   561,   567,   573,   579,   585,
-     591,   597,   603,   609,   615,   623,   637,   649,   654,   660,
-     665,   673,   678,   686,   691,   696,   706,   711,   716,   716,
-     726,   731,   734,   739,   743,   747,   749,   749,   752,   764,
-     769,   774,   781,   788,   795,   802,   807,   812,   817,   819,
-     819,   822,   827,   834,   839,   846,   853,   858,   859,   867,
-     867,   868,   868,   870,   877,   881,   885,   888,   893,   896,
-     898,   918,   919,   921,   930,   931,   933,   941,   942,   943,
-     947,   960,   961,   964,   964,   964,   964,   964,   964,   964,
-     965,   966,   971,   972,   981,   981,   985,   991,  1002,  1008,
-    1011,  1019,  1023,  1028,  1031,  1037,  1037,  1039,  1044,  1049,
-    1054,  1062,  1069,  1075,  1095,  1100,  1106,  1111,  1119,  1128,
-    1135,  1143,  1147,  1154,  1155,  1159,  1164,  1167,  1173,  1178,
-    1186,  1191,  1196,  1204,  1218,  1223,  1228,  1233,  1238,  1243,
-    1248,  1265,  1270,  1271,  1275,  1276,  1279,  1286,  1293,  1300,
-    1307,  1312,  1319,  1326
+     340,   340,   340,   340,   340,   340,   341,   341,   341,   341,
+     341,   341,   341,   341,   341,   341,   342,   342,   342,   342,
+     342,   342,   342,   342,   342,   342,   343,   343,   343,   343,
+     343,   343,   344,   344,   344,   344,   345,   345,   345,   345,
+     345,   345,   345,   346,   346,   346,   346,   346,   346,   351,
+     351,   351,   351,   352,   352,   352,   352,   353,   353,   354,
+     354,   357,   360,   365,   365,   365,   365,   365,   365,   366,
+     367,   370,   370,   370,   370,   370,   371,   372,   377,   382,
+     383,   386,   387,   395,   401,   402,   405,   406,   415,   416,
+     429,   429,   430,   430,   431,   435,   435,   435,   435,   435,
+     435,   435,   436,   436,   436,   436,   436,   438,   442,   446,
+     449,   454,   460,   468,   476,   482,   486,   497,   500,   508,
+     509,   514,   517,   527,   533,   538,   544,   550,   556,   561,
+     567,   573,   579,   585,   591,   597,   603,   609,   615,   623,
+     637,   649,   654,   660,   665,   673,   678,   683,   691,   696,
+     701,   711,   716,   721,   721,   731,   736,   739,   744,   748,
+     752,   754,   754,   757,   769,   774,   779,   786,   793,   800,
+     807,   812,   817,   822,   824,   824,   827,   832,   839,   844,
+     851,   858,   863,   864,   872,   872,   873,   873,   875,   882,
+     886,   890,   893,   898,   901,   903,   923,   924,   926,   935,
+     936,   938,   946,   947,   948,   952,   965,   966,   969,   969,
+     969,   969,   969,   969,   969,   970,   971,   976,   977,   986,
+     986,   990,   996,  1007,  1013,  1016,  1024,  1028,  1033,  1036,
+    1042,  1042,  1044,  1049,  1054,  1059,  1067,  1074,  1080,  1100,
+    1105,  1111,  1116,  1124,  1133,  1140,  1148,  1152,  1159,  1160,
+    1164,  1169,  1172,  1178,  1183,  1191,  1196,  1201,  1206,  1214,
+    1228,  1233,  1238,  1243,  1248,  1253,  1258,  1275,  1280,  1281,
+    1285,  1286,  1289,  1296,  1303,  1310,  1317,  1322,  1329,  1336
 };
 #endif
 
@@ -1075,7 +1078,7 @@
   "UITOFP", "SITOFP", "PTRTOINT", "INTTOPTR", "BITCAST", "'='", "','",
   "'\\\\'", "'('", "')'", "'['", "'x'", "']'", "'<'", "'>'", "'{'", "'}'",
   "'*'", "'c'", "$accept", "IntVal", "EInt64Val", "ArithmeticOps",
-  "LogicalOps", "SetCondOps", "CompareOps", "Predicates", "ShiftOps",
+  "LogicalOps", "SetCondOps", "IPredicates", "FPredicates", "ShiftOps",
   "CastOps", "SIntType", "UIntType", "IntType", "FPType", "OptAssign",
   "OptLinkage", "OptCallingConv", "OptAlign", "OptCAlign", "SectionString",
   "OptSection", "GlobalVarAttributes", "GlobalVarAttribute", "TypesV",
@@ -1123,34 +1126,34 @@
 {
        0,   165,   166,   166,   167,   167,   168,   168,   168,   168,
      168,   168,   168,   168,   168,   168,   168,   169,   169,   169,
-     170,   170,   170,   170,   170,   170,   171,   171,   172,   172,
+     170,   170,   170,   170,   170,   170,   171,   171,   171,   171,
+     171,   171,   171,   171,   171,   171,   172,   172,   172,   172,
      172,   172,   172,   172,   172,   172,   172,   172,   172,   172,
-     172,   172,   172,   172,   172,   172,   172,   172,   173,   173,
-     173,   173,   174,   174,   174,   174,   174,   174,   174,   174,
-     174,   174,   174,   174,   174,   175,   175,   175,   175,   176,
-     176,   176,   176,   177,   177,   178,   178,   179,   179,   180,
-     180,   180,   180,   180,   180,   180,   180,   181,   181,   181,
-     181,   181,   181,   181,   181,   182,   182,   183,   183,   184,
-     185,   185,   186,   186,   187,   187,   188,   188,   189,   189,
-     190,   191,   191,   191,   191,   191,   191,   191,   191,   191,
-     191,   191,   191,   192,   192,   192,   192,   192,   192,   192,
-     192,   192,   192,   193,   193,   194,   194,   194,   194,   195,
-     195,   195,   195,   195,   195,   195,   195,   195,   195,   195,
-     195,   195,   195,   195,   195,   196,   196,   196,   196,   196,
-     196,   196,   196,   196,   196,   196,   197,   197,   198,   198,
-     199,   200,   200,   200,   200,   200,   201,   201,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   203,   204,
-     204,   205,   205,   205,   205,   206,   207,   207,   207,   208,
-     208,   209,   209,   210,   211,   211,   212,   212,   212,   212,
-     213,   214,   214,   215,   216,   216,   217,   218,   218,   218,
-     219,   220,   220,   221,   221,   221,   221,   221,   221,   221,
-     221,   221,   221,   221,   222,   222,   223,   223,   224,   225,
-     225,   226,   227,   227,   227,   228,   228,   229,   229,   229,
-     229,   229,   229,   229,   229,   229,   230,   230,   231,   232,
-     232,   233,   233,   234,   234,   235,   235,   236,   236,   236,
-     236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
-     236,   236,   237,   237,   238,   238,   239,   239,   239,   239,
-     239,   239,   239,   239
+     172,   172,   173,   173,   173,   173,   174,   174,   174,   174,
+     174,   174,   174,   174,   174,   174,   174,   174,   174,   175,
+     175,   175,   175,   176,   176,   176,   176,   177,   177,   178,
+     178,   179,   179,   180,   180,   180,   180,   180,   180,   180,
+     180,   181,   181,   181,   181,   181,   181,   181,   181,   182,
+     182,   183,   183,   184,   185,   185,   186,   186,   187,   187,
+     188,   188,   189,   189,   190,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   192,   192,   192,
+     192,   192,   192,   192,   192,   192,   192,   193,   193,   194,
+     194,   194,   194,   195,   195,   195,   195,   195,   195,   195,
+     195,   195,   195,   195,   195,   195,   195,   195,   195,   196,
+     196,   196,   196,   196,   196,   196,   196,   196,   196,   196,
+     196,   197,   197,   198,   198,   199,   200,   200,   200,   200,
+     200,   201,   201,   202,   202,   202,   202,   202,   202,   202,
+     202,   202,   202,   203,   204,   204,   205,   205,   205,   205,
+     206,   207,   207,   207,   208,   208,   209,   209,   210,   211,
+     211,   212,   212,   212,   212,   213,   214,   214,   215,   216,
+     216,   217,   218,   218,   218,   219,   220,   220,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   222,
+     222,   223,   223,   224,   225,   225,   226,   227,   227,   227,
+     228,   228,   229,   229,   229,   229,   229,   229,   229,   229,
+     229,   230,   230,   231,   232,   232,   233,   233,   234,   234,
+     235,   235,   236,   236,   236,   236,   236,   236,   236,   236,
+     236,   236,   236,   236,   236,   236,   236,   236,   237,   237,
+     238,   238,   239,   239,   239,   239,   239,   239,   239,   239
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1163,29 +1166,29 @@
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     2,     0,     1,
-       1,     1,     1,     1,     1,     1,     0,     1,     1,     1,
-       1,     1,     1,     2,     0,     0,     2,     0,     3,     2,
-       0,     1,     0,     3,     1,     2,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     2,     4,     5,     5,
-       3,     2,     2,     1,     3,     1,     3,     1,     0,     4,
-       3,     3,     4,     4,     3,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     6,     5,     8,     6,     6,
-       6,     7,     6,     6,     8,     8,     3,     1,     1,     1,
-       1,     2,     2,     4,     2,     1,     1,     1,     4,     2,
-       4,     6,     6,     6,     6,     3,     4,     0,     1,     1,
-       1,     3,     3,     3,     3,     3,     3,     1,     0,     1,
-       1,     1,     0,     2,     3,     1,     1,     3,     1,     0,
-       8,     1,     1,     3,     1,     1,     3,     0,     1,     1,
-       3,     0,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     3,     1,     5,     1,     1,     1,     1,     2,     2,
-       1,     2,     2,     0,     1,     1,     1,     2,     2,     3,
-       9,     9,     8,    14,     1,     1,     6,     5,     2,     6,
-       7,     1,     3,     1,     0,     2,     1,     5,     5,     5,
-       7,     2,     4,     4,     6,     4,     4,     6,     6,     2,
-       7,     1,     2,     0,     1,     0,     3,     6,     3,     6,
-       2,     4,     6,     4
+       1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
+       0,     1,     1,     1,     1,     1,     1,     2,     0,     0,
+       2,     0,     3,     2,     0,     1,     0,     3,     1,     2,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       2,     4,     5,     5,     3,     2,     2,     1,     3,     1,
+       3,     1,     0,     4,     3,     3,     4,     4,     3,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     6,
+       5,     8,     6,     6,     6,     7,     7,     6,     6,     8,
+       8,     3,     1,     1,     1,     1,     2,     2,     4,     2,
+       1,     1,     1,     4,     2,     4,     6,     6,     6,     6,
+       3,     4,     0,     1,     1,     1,     3,     3,     3,     3,
+       3,     3,     1,     0,     1,     1,     1,     0,     2,     3,
+       1,     1,     3,     1,     0,     8,     1,     1,     3,     1,
+       1,     3,     0,     1,     1,     3,     0,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     3,     1,     5,     1,
+       1,     1,     1,     2,     2,     1,     2,     2,     0,     1,
+       1,     1,     2,     2,     3,     9,     9,     8,    14,     1,
+       1,     6,     5,     2,     6,     7,     1,     3,     1,     0,
+       2,     1,     5,     5,     5,     7,     7,     2,     4,     4,
+       6,     4,     4,     6,     6,     2,     7,     1,     2,     0,
+       1,     0,     3,     6,     3,     6,     2,     4,     6,     4
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1193,460 +1196,468 @@
    means the default is an error.  */
 static const unsigned short int yydefact[] =
 {
-     187,     0,    86,   175,     1,   174,   217,    79,    80,    81,
-      83,    84,    85,    82,     0,    94,   243,   171,   172,   199,
-     200,     0,     0,     0,    86,     0,   179,   218,   219,    94,
-       0,     0,    87,    88,    89,    90,    91,    92,     0,     0,
-     244,   243,   240,    78,     0,     0,     0,     0,   185,     0,
-       0,     0,     0,     0,   176,   177,     0,     0,    77,   220,
-     188,   173,    93,   107,   111,   112,   113,   114,   115,   116,
-     117,   118,   119,   120,   121,   122,   123,     2,     3,     0,
-       0,     0,     0,   234,     0,     0,   106,   125,   110,   235,
-     124,   211,   212,   213,   214,   215,   216,   239,     0,     0,
-       0,   246,   245,   255,   285,   254,   241,   242,     0,     0,
-       0,     0,   198,   186,   180,   178,   168,   169,     0,     0,
-       0,     0,   126,     0,     0,   109,   131,   133,     0,     0,
-     138,   132,   248,     0,   247,     0,     0,    68,    72,    67,
-      71,    66,    70,    65,    69,    73,    74,     0,   284,     0,
-     266,     0,    94,     6,     7,     8,     9,    10,    11,    12,
+     192,     0,    90,   180,     1,   179,   222,    83,    84,    85,
+      87,    88,    89,    86,     0,    98,   248,   176,   177,   204,
+     205,     0,     0,     0,    90,     0,   184,   223,   224,    98,
+       0,     0,    91,    92,    93,    94,    95,    96,     0,     0,
+     249,   248,   245,    82,     0,     0,     0,     0,   190,     0,
+       0,     0,     0,     0,   181,   182,     0,     0,    81,   225,
+     193,   178,    97,   111,   115,   116,   117,   118,   119,   120,
+     121,   122,   123,   124,   125,   126,   127,     2,     3,     0,
+       0,     0,     0,   239,     0,     0,   110,   129,   114,   240,
+     128,   216,   217,   218,   219,   220,   221,   244,     0,     0,
+       0,   251,   250,   260,   291,   259,   246,   247,     0,     0,
+       0,     0,   203,   191,   185,   183,   173,   174,     0,     0,
+       0,     0,   130,     0,     0,   113,   135,   137,     0,     0,
+     142,   136,   253,     0,   252,     0,     0,    72,    76,    71,
+      75,    70,    74,    69,    73,    77,    78,     0,   290,     0,
+     271,     0,    98,     6,     7,     8,     9,    10,    11,    12,
       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,     0,     0,     0,     0,     0,
-       0,    48,    49,    50,    51,     0,     0,     0,     0,    64,
-      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,     0,     0,     0,     0,     0,     0,    94,   258,
-       0,   281,   193,   190,   189,   191,   192,   194,   197,     0,
-     102,   102,   111,   112,   113,   114,   115,   116,   117,   118,
-     119,   120,   121,     0,     0,     0,     0,   102,   102,     0,
-       0,     0,   130,   209,   137,   135,     0,   223,   224,   225,
-     228,   229,   230,   226,   227,   221,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   232,   237,
-     236,   238,     0,   249,     0,   271,   265,     0,    97,    97,
-     290,     0,     0,   279,     0,     0,     0,     0,     0,     0,
-       0,     0,    28,    29,    30,    31,    32,    33,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    34,    35,
-      36,    37,     0,     0,     0,     0,     0,     0,     0,   195,
-       0,   183,   184,   152,   153,     4,     5,   150,   151,   154,
-     145,   146,   149,     0,     0,     0,     0,   148,   147,   181,
-     182,   108,   108,   134,   208,   202,   205,   206,     0,     0,
-     127,   222,     0,     0,     0,     0,     0,     0,   167,     0,
+      23,    24,    25,     0,     0,     0,     0,     0,     0,     0,
+       0,    52,    53,    54,    55,     0,     0,     0,     0,    68,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,     0,     0,     0,     0,     0,    98,   263,     0,
+     287,   198,   195,   194,   196,   197,   199,   202,     0,   106,
+     106,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+     124,   125,     0,     0,     0,     0,   106,   106,     0,     0,
+       0,   134,   214,   141,   139,     0,   228,   229,   230,   233,
+     234,   235,   231,   232,   226,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   237,   242,
+     241,   243,     0,   254,     0,   277,   270,     0,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,     0,    50,
+      51,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,     0,   101,   101,   296,     0,
+       0,   285,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   200,     0,   188,   189,
+     156,   157,     4,     5,   154,   155,   158,   149,   150,   153,
+       0,     0,     0,     0,   152,   151,   186,   187,   112,   112,
+     138,   213,   207,   210,   211,     0,     0,   131,   227,     0,
+       0,     0,     0,     0,     0,     0,     0,   172,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     286,     0,   288,   283,     0,     0,     0,     0,     0,     0,
+     292,     0,   294,   289,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   201,
+       0,     0,   108,   106,   144,     0,     0,   148,     0,   145,
+     132,   133,   206,   208,     0,   104,   140,     0,     0,     0,
+     289,     0,     0,     0,     0,     0,   236,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     196,     0,     0,   104,   102,   140,     0,     0,   144,     0,
-     141,   128,   129,   201,   203,     0,   100,   136,     0,   283,
-       0,     0,     0,     0,     0,   231,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   293,
-       0,     0,     0,   275,   276,     0,     0,     0,     0,     0,
-       0,   272,   273,     0,   291,     0,    99,   105,   103,   139,
-     142,   143,   207,   204,   101,    95,     0,     0,     0,     0,
-       0,     0,   166,     0,     0,     0,     0,     0,     0,     0,
-       0,   264,    97,    98,    97,   261,   282,     0,     0,     0,
-       0,     0,   267,   268,   269,     0,   264,     0,     0,   210,
-     233,   156,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   263,     0,     0,   287,   289,     0,
-       0,     0,   274,   277,   278,     0,     0,   292,    96,     0,
-     163,     0,     0,   158,   159,   160,     0,   162,   155,     0,
-     252,     0,     0,     0,   262,   259,     0,   270,   280,     0,
-       0,     0,   161,   250,     0,   251,     0,     0,   260,   157,
-     164,   165,     0,     0,     0,     0,     0,     0,   257,     0,
-       0,   256,     0,   253
+       0,   299,     0,     0,     0,   281,   282,     0,     0,     0,
+       0,     0,   278,   279,     0,   297,     0,   103,   109,   107,
+     143,   146,   147,   212,   209,   105,    99,     0,     0,     0,
+       0,     0,     0,     0,     0,   171,     0,     0,     0,     0,
+       0,     0,     0,   269,     0,     0,   101,   102,   101,   266,
+     288,     0,     0,     0,     0,     0,   272,   273,   274,   269,
+       0,     0,   215,   238,     0,     0,   160,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   268,     0,
+       0,     0,     0,   293,   295,     0,     0,     0,   280,   283,
+     284,     0,   298,   100,     0,     0,     0,   168,     0,     0,
+     162,   163,   164,   167,   159,     0,   257,     0,     0,     0,
+     275,   276,   267,   264,     0,   286,   165,   166,     0,     0,
+       0,   255,     0,   256,     0,     0,   265,   161,   169,   170,
+       0,     0,     0,     0,     0,     0,   262,     0,     0,   261,
+       0,   258
 };
 
 /* YYDEFGOTO[NTERM-NUM]. */
 static const short int yydefgoto[] =
 {
-      -1,    83,   327,   262,   263,   264,   265,   312,   266,   267,
-     233,   234,   147,   235,    24,    15,    38,   489,   370,   393,
-     455,   321,   394,    84,    85,   236,    87,    88,   128,   246,
-     358,   268,   359,   118,     1,     2,    57,     3,    61,   215,
-      48,   113,   219,    89,   404,   346,   347,   348,    39,    93,
-      16,    96,    17,    29,    18,   352,   269,    90,   271,   475,
-      41,    42,    43,   105,   106,   532,   107,   283,   504,   505,
-     208,   209,   429,   210,   211
+      -1,    83,   334,   263,   264,   265,   288,   305,   266,   267,
+     232,   233,   147,   234,    24,    15,    38,   502,   380,   402,
+     466,   328,   403,    84,    85,   235,    87,    88,   128,   245,
+     367,   268,   368,   118,     1,     2,    57,     3,    61,   214,
+      48,   113,   218,    89,   413,   353,   354,   355,    39,    93,
+      16,    96,    17,    29,    18,   359,   269,    90,   271,   489,
+      41,    42,    43,   105,   106,   548,   107,   311,   518,   519,
+     207,   208,   441,   209,   210
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -507
+#define YYPACT_NINF -501
 static const short int yypact[] =
 {
-    -507,    31,    62,   973,  -507,  -507,   -18,  -507,  -507,  -507,
-    -507,  -507,  -507,  -507,    -3,   124,    43,  -507,  -507,  -507,
-    -507,   -33,   -60,    25,   177,   -37,  -507,  -507,  -507,   124,
-     102,   128,  -507,  -507,  -507,  -507,  -507,  -507,   800,   -25,
-    -507,   -17,  -507,    49,    12,    16,    26,    29,  -507,    28,
-     102,   800,     7,     7,  -507,  -507,     7,     7,  -507,  -507,
-    -507,  -507,  -507,    42,  -507,  -507,  -507,  -507,  -507,  -507,
-    -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,   163,
-     164,   165,   469,  -507,    27,    47,  -507,  -507,  -109,  -507,
-    -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,   837,    20,
-     146,  -507,  -507,  -507,  1314,  -507,  -507,  -507,   155,    19,
-     179,   172,   173,  -507,  -507,  -507,  -507,  -507,   882,   882,
-     921,   882,  -507,    50,    51,  -507,  -507,  -109,  -126,    52,
-     564,  -507,    42,  1112,  -507,  1112,  1112,  -507,  -507,  -507,
-    -507,  -507,  -507,  -507,  -507,  -507,  -507,  1112,  -507,   882,
-    -507,   149,   124,  -507,  -507,  -507,  -507,  -507,  -507,  -507,
-    -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,
-    -507,  -507,  -507,  -507,  -507,   882,   882,   882,   882,   882,
-     882,  -507,  -507,  -507,  -507,   882,   882,   882,   882,  -507,
-    -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,
-    -507,  -507,   882,   882,   882,   860,   882,   882,   124,  -507,
-      -5,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,   -64,
-      58,    58,    77,   117,   193,   126,   194,   142,   195,   144,
-     198,   197,   207,   153,   213,   211,   964,    58,    58,   882,
-     882,   882,  -507,   640,  -507,    81,    82,  -507,  -507,  -507,
-    -507,  -507,  -507,  -507,  -507,   170,    84,    86,    87,    88,
-      89,   921,    90,    91,    92,   860,    93,    94,  -507,  -507,
-    -507,  -507,    97,  -507,   104,  -507,  -507,   800,   105,   109,
-    -507,  1112,    80,   112,   114,   115,   118,   120,   121,  1112,
-    1112,  1112,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,
-    -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,
-    -507,  -507,   882,   123,   230,   800,   882,   882,   220,  -507,
-     -23,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,  -507,
-    -507,  -507,  -507,   678,   921,   516,   246,  -507,  -507,  -507,
-    -507,   -73,   -48,  -109,  -507,    27,  -507,   131,   125,   723,
-    -507,  -507,   256,   921,   921,   921,   921,   921,  -507,   -76,
-     921,   921,   921,   133,   921,   921,   274,   278,  1112,    -1,
-    -507,     1,  -507,   143,  1112,   138,   882,   882,   882,   882,
-     882,   147,   148,   150,  1112,   882,   882,  1112,  1112,   151,
-    -507,   266,   280,  -507,    58,  -507,   -57,   -74,  -507,  -124,
-    -507,  -507,  -507,  -507,  -507,   762,   264,  -507,   152,   143,
-     154,   156,   157,   158,   921,  -507,   159,   161,   162,   921,
-     166,   268,  1112,  1112,   167,  1112,   287,  1112,   882,  -507,
-     171,  1112,   174,  -507,  -507,   175,   178,  1112,  1112,  1112,
-     180,  -507,  -507,   183,  -507,   882,  -507,  -507,  -507,  -507,
-    -507,  -507,  -507,  -507,  -507,   258,   286,   176,   921,   921,
-     921,   921,  -507,   921,   921,   921,   181,   921,   882,   192,
-     169,   882,   199,  -507,   199,  -507,   200,  1112,   201,   882,
-     882,   882,  -507,  -507,  -507,  1112,   882,  1112,   311,  -507,
-    -507,  -507,   202,   190,   203,   212,   191,   216,   217,   921,
-     218,   221,   334,    41,   200,   222,   293,  -507,  -507,   882,
-     208,  1112,  -507,  -507,  -507,   223,   224,  -507,  -507,   921,
-    -507,   921,   921,  -507,  -507,  -507,   225,  -507,  -507,  1112,
-    -507,  1201,    59,   336,  -507,  -507,   227,  -507,  -507,   226,
-     228,   231,  -507,  -507,   235,  -507,  1201,   373,  -507,  -507,
-    -507,  -507,   374,   242,  1112,  1112,   380,    98,  -507,  1112,
-     381,  -507,  1112,  -507
+    -501,    82,     9,   975,  -501,  -501,    72,  -501,  -501,  -501,
+    -501,  -501,  -501,  -501,    29,    34,    94,  -501,  -501,  -501,
+    -501,   -28,   -42,    66,   127,    25,  -501,  -501,  -501,    34,
+     122,   199,  -501,  -501,  -501,  -501,  -501,  -501,   839,   -17,
+    -501,   -19,  -501,    47,    67,    68,    69,    75,  -501,    71,
+     122,   839,    11,    11,  -501,  -501,    11,    11,  -501,  -501,
+    -501,  -501,  -501,    76,  -501,  -501,  -501,  -501,  -501,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,   207,
+     210,   211,   518,  -501,   123,    77,  -501,  -501,   -84,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,   876,     8,
+     253,  -501,  -501,  -501,  1333,  -501,  -501,  -501,   203,    80,
+     217,   206,   208,  -501,  -501,  -501,  -501,  -501,   922,   922,
+     960,   922,  -501,    83,    84,  -501,  -501,   -84,  -134,    88,
+     604,  -501,    76,  1131,  -501,  1131,  1131,  -501,  -501,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  1131,  -501,   922,
+    -501,   177,    34,  -501,  -501,  -501,  -501,  -501,  -501,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,
+    -501,  -501,  -501,   103,    81,   922,   922,   922,   922,   922,
+     922,  -501,  -501,  -501,  -501,   922,   922,   922,   922,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,
+    -501,  -501,   922,   922,   922,   922,   922,    34,  -501,    20,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,   -44,    91,
+      91,   130,   143,   226,   145,   227,   161,   230,   163,   231,
+     232,   233,   165,   234,   245,  1042,    91,    91,   922,   922,
+     922,  -501,   679,  -501,    99,   113,  -501,  -501,  -501,  -501,
+    -501,  -501,  -501,  -501,   205,   103,    81,   119,   120,   125,
+     128,   129,   960,   133,   134,   135,   139,   140,  -501,  -501,
+    -501,  -501,   124,  -501,   149,  -501,  -501,   839,  -501,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,   922,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,
+    -501,  -501,  -501,  -501,  -501,   922,   150,   151,  -501,  1131,
+     136,   153,   154,   155,   156,   157,   158,  1131,  1131,  1131,
+     159,   241,   839,   922,   922,   251,  -501,   -18,  -501,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,
+     717,   960,   549,   265,  -501,  -501,  -501,  -501,   -69,   -50,
+     -84,  -501,   123,  -501,   160,   142,   763,  -501,  -501,   283,
+     164,   166,   960,   960,   960,   960,   960,  -501,  -110,   960,
+     960,   960,   960,   960,   302,   304,  1131,  1131,  1131,     1,
+    -501,    12,  -501,   169,  1131,   167,   922,   922,   922,   922,
+     922,   172,   173,   176,   922,   922,  1131,  1131,   178,  -501,
+     299,   314,  -501,    91,  -501,   -40,   -68,  -501,   -74,  -501,
+    -501,  -501,  -501,  -501,   801,   301,  -501,   184,   960,   960,
+     169,   187,   188,   189,   190,   960,  -501,   194,   195,   201,
+     209,   316,  1131,  1131,   204,   212,   213,  1131,   341,  1131,
+     922,  -501,   214,  1131,   215,  -501,  -501,   216,   220,  1131,
+    1131,  1131,  -501,  -501,   219,  -501,   922,  -501,  -501,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,   303,   332,   222,   228,
+     229,   960,   960,   960,   960,  -501,   960,   960,   960,   960,
+     922,   238,   235,   922,  1131,  1131,   240,  -501,   240,  -501,
+     243,  1131,   244,   922,   922,   922,  -501,  -501,  -501,   922,
+    1131,   345,  -501,  -501,   960,   960,  -501,   246,   242,   247,
+     248,   252,   254,   255,   256,   257,   354,    26,   243,   258,
+     259,   260,   325,  -501,  -501,   922,   225,  1131,  -501,  -501,
+    -501,   261,  -501,  -501,   262,   269,   960,  -501,   960,   960,
+    -501,  -501,  -501,  -501,  -501,  1131,  -501,  1220,    56,   347,
+    -501,  -501,  -501,  -501,   250,  -501,  -501,  -501,   270,   271,
+     272,  -501,   249,  -501,  1220,   378,  -501,  -501,  -501,  -501,
+     391,   276,  1131,  1131,   415,   138,  -501,  1131,   416,  -501,
+    1131,  -501
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const short int yypgoto[] =
 {
-    -507,  -507,  -507,   294,   295,   296,   297,   137,   299,   300,
-     -98,   -97,  -495,  -507,   366,   386,  -135,  -507,  -274,     5,
-    -507,  -215,  -507,   -47,  -507,   -38,  -507,   -67,   282,  -507,
-    -102,   182,  -204,    60,  -507,  -507,  -507,  -507,   363,  -507,
-    -507,  -507,  -507,    -2,  -507,     9,  -507,  -507,   387,  -507,
-    -507,  -507,  -507,  -507,   412,  -507,  -506,  -103,    79,   -88,
-    -507,   382,  -507,  -133,  -507,  -507,  -507,  -507,    -6,   -61,
-    -507,  -507,    18,  -507,  -507
+    -501,  -501,  -501,   328,   329,   330,   181,   185,   333,   336,
+     -98,   -97,  -500,  -501,   400,   420,  -136,  -501,  -300,    31,
+    -501,  -216,  -501,   -45,  -501,   -38,  -501,   -81,   317,  -501,
+     126,   218,  -208,    74,  -501,  -501,  -501,  -501,   398,  -501,
+    -501,  -501,  -501,     2,  -501,    35,  -501,  -501,   423,  -501,
+    -501,  -501,  -501,  -501,   451,  -501,  -471,  -106,   -62,   -90,
+    -501,   417,  -501,  -116,  -501,  -501,  -501,  -501,    22,   -39,
+    -501,  -501,    43,  -501,  -501
 };
 
 /* 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 -171
+#define YYTABLE_NINF -176
 static const short int yytable[] =
 {
-      86,    25,   145,   146,   115,   372,   322,    91,   531,   425,
-     134,   427,    40,    86,   391,   127,    94,   277,   237,    44,
-      45,    46,   339,   340,   135,   544,   241,    27,   414,    28,
-     270,     4,   270,   270,   392,   136,   242,   546,   451,    47,
-     553,    25,   116,   117,   270,  -108,   137,   138,   139,   140,
-     141,   142,   143,   144,   131,    19,   426,    20,   426,    30,
-     133,   275,  -170,   127,   137,   138,   139,   140,   141,   142,
-     143,   144,    40,   315,   213,   214,   414,    19,   414,    20,
-     220,   221,   129,   238,   415,   401,   450,    50,   318,   280,
-     131,    49,   284,     5,   319,   414,     6,   285,   286,   287,
-     288,   449,   323,   324,     7,     8,     9,    10,    11,    12,
-      13,   133,   402,   119,    58,   131,   120,   121,   313,   314,
-     316,   317,    98,    99,   100,    14,   101,   102,   103,   396,
-     397,   399,    60,   338,   -68,   -68,    92,   278,   279,   133,
-     281,   282,   133,   -67,   -67,    95,    62,   133,   133,   133,
-     133,   137,   138,   139,   140,   141,   142,   143,   144,   -66,
-     -66,   -65,   -65,   108,   289,   290,   291,   109,   133,   133,
-     325,   326,   341,   342,   343,   101,   102,   110,   270,   448,
-     111,   122,   123,   124,   112,   212,   270,   270,   270,    31,
-      32,    33,    34,    35,    36,    37,  -109,   216,   507,   530,
-     508,   130,   217,   218,    51,   345,   243,   239,   240,   276,
-     320,   -72,   -71,   -70,   272,   273,   -69,   545,   -75,     7,
-       8,     9,    52,    11,    53,    13,   274,    54,   -76,   389,
-     368,   328,   329,   349,   351,    55,   374,   350,   353,    86,
-     354,   355,   356,   357,   360,   361,   362,   364,   365,   366,
-     390,   409,   410,   411,   412,   413,   367,   369,   416,   417,
-     418,   371,   420,   421,   375,   270,   376,   377,   387,   386,
-     378,   270,   379,   380,   384,   385,   400,    86,   388,   133,
-     406,   270,   343,   405,   270,   270,   408,   419,   432,   422,
-     434,   435,   436,   423,   431,   428,   446,   441,   447,   437,
-     438,   391,   439,   445,   456,   473,   458,   468,   459,   460,
-     461,   463,   462,   464,   465,   488,   490,   466,   467,   270,
-     270,   471,   270,   477,   270,   503,   479,   480,   270,   518,
-     481,   491,   485,   499,   270,   270,   270,   486,   133,   433,
-     133,   133,   133,   403,   502,   520,   523,   133,   442,   529,
-     426,   506,   509,   511,   519,   521,   492,   493,   494,   495,
-     373,   496,   497,   498,   522,   500,   535,   345,   381,   382,
-     383,   524,   525,   527,   270,   547,   528,   533,   537,   538,
-     542,   549,   270,   550,   270,   548,   551,   552,   554,   555,
-     133,   512,   513,   514,   556,   559,   562,   526,   202,   203,
-     204,   205,   363,   206,   207,   145,   146,   487,   270,   104,
-      56,   454,   245,   114,   453,    26,    59,   539,   337,   540,
-     541,   534,   476,    97,   560,   516,   270,   457,     0,     0,
-     501,     0,     0,   133,   145,   146,     0,     0,     0,     0,
-       0,   133,   133,   133,     0,     0,     0,   424,   133,     0,
-       0,   270,   270,   430,     0,     0,   270,     0,     0,   270,
-       0,     0,     0,   440,     0,     0,   443,   444,     0,     0,
-       0,   133,   125,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,     0,     0,    77,    78,
+      86,   127,   145,   146,   329,    25,   115,   382,   134,  -175,
+      40,   437,   135,    86,    94,    91,   277,   547,   240,   400,
+     346,   347,   439,   136,    44,    45,    46,   270,   241,   270,
+     270,   137,   138,   139,   140,   141,   142,   143,   144,   401,
+       5,   270,   425,     6,    47,    25,   116,   117,   564,   127,
+     426,     7,     8,     9,    10,    11,    12,    13,   438,   275,
+     133,   137,   138,   139,   140,   141,   142,   143,   144,   438,
+    -112,   322,    14,   272,   273,    19,   562,    20,   425,   131,
+     219,   220,     4,   237,   425,   274,   129,   308,   462,   410,
+     312,    30,   461,   571,   131,   313,   314,   315,   316,    31,
+      32,    33,    34,    35,    36,    37,   289,   290,   325,    49,
+     411,   133,   425,   131,   326,   320,   321,    27,   460,    28,
+      98,    99,   100,    40,   101,   102,   103,   119,    50,   345,
+     120,   121,   405,   406,   408,   212,   213,   306,   307,   133,
+     309,   310,   133,    95,    92,   323,   324,   133,   133,   133,
+     133,    19,    60,    20,    51,   330,   331,   348,   349,   350,
+     -72,   -72,   -71,   -71,   317,   318,   319,   133,   133,     7,
+       8,     9,    52,    11,    53,    13,    58,    54,   -70,   -70,
+     -69,   -69,   332,   333,   546,    55,   523,   459,   524,   291,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,   303,   304,   270,   352,   278,   279,   280,   281,   282,
+     283,   270,   270,   270,   563,   101,   102,    62,   108,   109,
+     110,   284,   285,   286,   287,   122,   111,   112,   123,   124,
+    -113,   130,   376,   211,   398,   215,   216,   276,   217,    86,
+     238,   239,   242,   327,   -76,   -75,   236,   383,   -74,   -73,
+     377,   356,   335,   -79,   -80,   391,   392,   393,   137,   138,
+     139,   140,   141,   142,   143,   144,   336,   378,   357,   358,
+     270,   270,   270,   362,   363,   350,   374,   396,   270,   364,
+     395,   399,   365,   366,    86,   397,   133,   369,   370,   371,
+     270,   270,   384,   372,   373,   409,   444,   415,   446,   447,
+     448,   375,   379,   381,   452,   385,   386,   387,   388,   389,
+     390,   394,   414,   417,   434,   435,   436,   432,   418,   433,
+     419,   440,   442,   443,   449,   450,   270,   270,   451,   457,
+     456,   270,   458,   270,   454,   455,   467,   270,   400,   471,
+     472,   473,   474,   270,   270,   270,   476,   477,   133,   445,
+     133,   133,   133,   478,   412,   480,   133,   453,   483,   487,
+     501,   479,   503,   533,   484,   485,   491,   493,   494,   545,
+     481,   482,   495,   499,   504,   486,   352,   488,   270,   270,
+     505,   492,   438,   553,   506,   270,   565,   496,   497,   498,
+     516,   517,   522,   572,   270,   525,   527,   537,   536,   538,
+     539,   570,   133,   528,   529,   530,   573,   540,   566,   541,
+     542,   543,   544,   549,   550,   551,   555,   556,   500,   145,
+     146,   270,   520,   521,   557,   567,   568,   569,   574,   526,
+     577,   580,   202,   203,   204,   552,   360,   205,   532,   270,
+     206,   361,   515,   104,    56,   133,   465,   244,   114,   464,
+     145,   146,    59,   344,    26,   133,   133,   133,    97,   578,
+     531,   133,   490,   470,     0,   554,   270,   270,     0,     0,
+       0,   270,     0,     0,   270,     0,     0,     0,     0,     0,
+       0,     0,     0,   561,     0,     0,     0,   133,   420,   421,
+     422,   423,   424,     0,     0,   427,   428,   429,   430,   431,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     575,   576,     0,     0,     0,   579,     0,     0,   581,     0,
+       0,   125,    64,    65,    66,    67,    68,    69,    70,    71,
+      72,    73,    74,    75,    76,     0,     0,    77,    78,     0,
+       0,     0,     0,     0,   468,   469,    19,     0,    20,     0,
+       0,   475,   125,   221,   222,   223,   224,   225,   226,   227,
+     228,   229,   230,   231,    75,    76,     0,     0,    77,    78,
        0,     0,     0,     0,     0,     0,     0,    19,     0,    20,
-       0,   469,   470,     0,   472,     0,   474,     0,     0,     0,
-     478,     0,     0,     0,     0,     0,   482,   483,   484,   125,
-     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
-     232,    75,    76,     0,     0,    77,    78,     0,     0,     0,
-       0,     0,     0,     0,    19,     0,    20,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   510,     0,     0,     0,
-       0,     0,     0,     0,   515,     0,   517,   125,    64,    65,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   507,   508,   509,
+     510,     0,   511,   512,   513,   514,     0,   125,    64,    65,
       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
       76,     0,     0,    77,    78,     0,     0,     0,     0,     0,
-     536,     0,    19,     0,    20,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   244,     0,     0,     0,   543,     0,
+     534,   535,    19,     0,    20,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   243,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    79,     0,     0,    80,     0,     0,    81,     0,
-      82,   126,     0,   557,   558,     0,     0,     0,   561,     0,
-       0,   563,     0,   125,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,     0,     0,    77,
-      78,     0,     0,     0,     0,     0,     0,     0,    19,    79,
-      20,     0,    80,     0,     0,    81,     0,    82,   398,     0,
-     344,   125,   222,   223,   224,   225,   226,   227,   228,   229,
-     230,   231,   232,    75,    76,     0,     0,    77,    78,     0,
-       0,     0,     0,     0,     0,     0,    19,     0,    20,     0,
+       0,     0,   558,     0,   559,   560,     0,     0,     0,     0,
+       0,    79,     0,     0,    80,     0,     0,    81,     0,    82,
+     126,     0,   125,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,    75,    76,     0,     0,    77,    78,
+       0,     0,    79,     0,     0,    80,     0,    19,    81,    20,
+      82,   407,     0,     0,     0,     0,     0,     0,     0,   351,
+     125,   221,   222,   223,   224,   225,   226,   227,   228,   229,
+     230,   231,    75,    76,     0,     0,    77,    78,     0,     0,
+       0,     0,     0,     0,     0,    19,     0,    20,     0,     0,
        0,     0,     0,     0,     0,     0,     0,    79,     0,     0,
       80,     0,     0,    81,     0,    82,   125,    64,    65,    66,
       67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
        0,     0,    77,    78,     0,     0,     0,     0,     0,     0,
        0,    19,     0,    20,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   407,     0,   125,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
-       0,    77,    78,     0,     0,     0,     0,     0,     0,     0,
-      19,     0,    20,    79,     0,     0,    80,     0,     0,    81,
-       0,    82,   452,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,     0,     0,    77,
-      78,     0,     0,     0,     0,     0,     0,     0,    19,     0,
-      20,    79,     0,     0,    80,     0,   395,    81,     0,    82,
-     132,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,     0,     0,    77,    78,     0,     0,
-       0,     0,     0,     0,     0,    19,     0,    20,     0,     0,
+       0,     0,     0,   416,   125,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,     0,     0,
+      77,    78,     0,     0,     0,     0,     0,     0,     0,    19,
+       0,    20,    79,     0,     0,    80,     0,     0,    81,     0,
+      82,   463,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,    75,    76,     0,     0,    77,    78,
+       0,     0,     0,     0,     0,     0,     0,    19,     0,    20,
+      79,     0,     0,    80,     0,   404,    81,     0,    82,   132,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,     0,     0,    77,    78,     0,     0,     0,
+       0,     0,     0,     0,    19,     0,    20,     0,     0,     0,
        0,     0,     0,     0,     0,     0,    79,     0,     0,    80,
        0,     0,    81,     0,    82,   125,    64,    65,    66,    67,
       68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
        0,    77,    78,     0,     0,     0,     0,     0,     0,     0,
-      19,     0,    20,     0,     0,    79,     0,     0,    80,     0,
-       0,    81,     0,    82,   125,   222,   223,   224,   225,   226,
-     227,   228,   229,   230,   231,   232,    75,    76,     0,     0,
-      77,    78,     0,     0,     0,     0,     0,     0,     0,    19,
-       0,    20,     0,    79,     0,     0,    80,     0,     0,    81,
-       0,    82,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,     0,    77,    78,     0,   330,   331,   332,     0,
-      79,     0,    19,    80,    20,     0,    81,     0,    82,     0,
-     -78,    19,     0,    20,     0,     0,     0,     6,   -78,   -78,
-       0,     0,     0,     0,     0,   -78,   -78,   -78,   -78,   -78,
-     -78,   -78,     0,   -78,    21,     0,     0,     0,     0,     0,
-       0,   -78,    22,     0,     0,    79,    23,     0,    80,     0,
-       0,    81,     0,    82,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,     0,     0,     0,     0,
-       0,     0,     0,     0,    79,     0,     0,    80,     0,     0,
-      81,     0,    82,     0,     0,     0,     0,     0,     0,     0,
-       0,   256,     0,   257,   181,   182,   183,   184,     0,   258,
-     259,   260,   189,   190,   191,   192,   193,   194,   195,   196,
-     197,   198,   199,   200,   201,     0,     0,     0,     0,     0,
-     333,     0,     0,   334,     0,   335,     0,     0,   336,   247,
-     248,    77,    78,   249,   250,   251,   252,   253,   254,     0,
-      19,     0,    20,     0,     0,     0,     0,     0,     0,     0,
+      19,     0,    20,     0,    79,     0,     0,    80,     0,     0,
+      81,     0,    82,   125,   221,   222,   223,   224,   225,   226,
+     227,   228,   229,   230,   231,    75,    76,     0,     0,    77,
+      78,     0,     0,     0,     0,     0,     0,     0,    19,     0,
+      20,     0,    79,     0,     0,    80,     0,     0,    81,     0,
+      82,     0,   -82,    19,     0,    20,     0,     0,     0,     6,
+     -82,   -82,     0,     0,     0,     0,     0,   -82,   -82,   -82,
+     -82,   -82,   -82,   -82,     0,   -82,    21,     0,     0,    79,
+       0,     0,    80,   -82,    22,    81,     0,    82,    23,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    77,    78,     0,   337,   338,   339,     0,     0,     0,
+      19,     0,    20,     0,     0,    79,     0,     0,    80,     0,
+       0,    81,     0,    82,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   255,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   153,   154,   155,   156,   157,   158,   159,   160,
+       0,     0,     0,    79,     0,     0,    80,     0,     0,    81,
+       0,    82,   153,   154,   155,   156,   157,   158,   159,   160,
      161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     171,   172,   173,   174,     0,     0,     0,     0,   247,   248,
-       0,     0,   249,   250,   251,   252,   253,   254,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   256,
-       0,   257,   181,   182,   183,   184,     0,   258,   259,   260,
+     171,   172,   255,   256,     0,     0,     0,     0,   246,   247,
+      77,    78,   248,   249,   250,   251,   252,   253,     0,    19,
+       0,    20,     0,     0,     0,     0,     0,     0,     0,   257,
+       0,   258,   181,   182,   183,   184,     0,   259,   260,   261,
      189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   255,     0,     0,     0,     0,     0,     0,
-       0,   261,     0,     0,     0,     0,     0,     0,     0,     0,
+     199,   200,   201,   254,     0,     0,     0,     0,   340,     0,
+       0,   341,     0,   342,     0,     0,   343,     0,     0,     0,
        0,   153,   154,   155,   156,   157,   158,   159,   160,   161,
      162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-     172,   173,   174,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   256,     0,
-     257,   181,   182,   183,   184,     0,   258,   259,   260,   189,
+     172,   255,   256,     0,     0,     0,     0,   246,   247,     0,
+       0,   248,   249,   250,   251,   252,   253,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   257,     0,
+     258,   181,   182,   183,   184,     0,   259,   260,   261,   189,
      190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
-     200,   201,   148,     0,     0,     0,     0,     0,     0,     0,
-     261,     0,     0,   149,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   150,   151,     0,     0,     0,     0,
+     200,   201,   254,     0,     0,     0,     0,     0,     0,     0,
+     262,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
+     255,   256,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     152,     0,     0,     0,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   257,     0,   258,
+     181,   182,   183,   184,     0,   259,   260,   261,   189,   190,
+     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
+     201,   148,     0,     0,     0,     0,     0,     0,     0,   262,
+       0,     0,   149,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   150,   151,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   152,
+       0,     0,     0,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   175,   176,   177,     0,
-       0,   178,   179,   180,   181,   182,   183,   184,   185,   186,
-     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
-     197,   198,   199,   200,   201
+       0,     0,     0,     0,     0,   175,   176,   177,     0,     0,
+     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+     198,   199,   200,   201
 };
 
 static const short int yycheck[] =
 {
-      38,     3,   100,   100,    51,   279,   221,    32,   503,    10,
-      98,    10,    29,    51,    37,    82,    33,   152,   120,    52,
-      53,    54,   237,   238,     4,   531,   152,    45,   152,    47,
-     133,     0,   135,   136,    57,    15,   162,   532,   162,    72,
-     546,    43,    35,    36,   147,   154,     5,     6,     7,     8,
-       9,    10,    11,    12,   163,    28,    57,    30,    57,    62,
-      98,   149,     0,   130,     5,     6,     7,     8,     9,    10,
-      11,    12,    29,   208,    55,    56,   152,    28,   152,    30,
-     118,   119,    84,   121,   160,   158,   160,    62,   152,   177,
-     163,   151,   180,    31,   158,   152,    34,   185,   186,   187,
-     188,   158,    25,    26,    42,    43,    44,    45,    46,    47,
-      48,   149,   160,    53,   151,   163,    56,    57,   206,   207,
-     125,   126,    73,    74,    75,    63,    77,    78,    79,   333,
-     334,   335,    30,   236,    17,    18,   161,   175,   176,   177,
-     178,   179,   180,    17,    18,   162,    18,   185,   186,   187,
-     188,     5,     6,     7,     8,     9,    10,    11,    12,    17,
-      18,    17,    18,   151,   202,   203,   204,   151,   206,   207,
-      17,    18,   239,   240,   241,    77,    78,   151,   281,   394,
-     151,    18,    18,    18,   156,    30,   289,   290,   291,    65,
-      66,    67,    68,    69,    70,    71,   154,    18,   472,   158,
-     474,   154,    30,    30,    27,   243,   154,   157,   157,    60,
-     152,    18,    18,    18,   135,   136,    18,   158,    21,    42,
-      43,    44,    45,    46,    47,    48,   147,    50,    21,   317,
-     277,    18,    21,   152,    64,    58,   156,   155,   154,   277,
-     154,   154,   154,   154,   154,   154,   154,   154,   154,   152,
-      30,   353,   354,   355,   356,   357,   152,   152,   360,   361,
-     362,   152,   364,   365,   152,   368,   152,   152,   315,    39,
-     152,   374,   152,   152,   312,   152,    30,   315,   316,   317,
-     155,   384,   349,   152,   387,   388,    30,   154,   376,    15,
-     378,   379,   380,    15,   156,   152,    30,   385,    18,   152,
-     152,    37,   152,   152,   152,    18,   152,    39,   152,   152,
-     152,   152,   414,   152,   152,    57,    30,   419,   152,   422,
-     423,   154,   425,   152,   427,   156,   152,   152,   431,    18,
-     152,   155,   152,   152,   437,   438,   439,   154,   376,   377,
-     378,   379,   380,   345,   152,   155,   155,   385,   386,    15,
-      57,   152,   152,   152,   152,   152,   458,   459,   460,   461,
-     281,   463,   464,   465,   152,   467,   158,   405,   289,   290,
-     291,   155,   155,   155,   477,    39,   155,   155,   155,   155,
-     155,   155,   485,   155,   487,   158,   155,   152,    15,    15,
-     428,   479,   480,   481,   152,    15,    15,   499,   104,   104,
-     104,   104,   265,   104,   104,   503,   503,   445,   511,    43,
-      24,   406,   130,    50,   405,     3,    29,   519,   236,   521,
-     522,   509,   428,    41,   557,   486,   529,   409,    -1,    -1,
-     468,    -1,    -1,   471,   532,   532,    -1,    -1,    -1,    -1,
-      -1,   479,   480,   481,    -1,    -1,    -1,   368,   486,    -1,
-      -1,   554,   555,   374,    -1,    -1,   559,    -1,    -1,   562,
-      -1,    -1,    -1,   384,    -1,    -1,   387,   388,    -1,    -1,
-      -1,   509,     3,     4,     5,     6,     7,     8,     9,    10,
+      38,    82,   100,   100,   220,     3,    51,   307,    98,     0,
+      29,    10,     4,    51,    33,    32,   152,   517,   152,    37,
+     236,   237,    10,    15,    52,    53,    54,   133,   162,   135,
+     136,     5,     6,     7,     8,     9,    10,    11,    12,    57,
+      31,   147,   152,    34,    72,    43,    35,    36,   548,   130,
+     160,    42,    43,    44,    45,    46,    47,    48,    57,   149,
+      98,     5,     6,     7,     8,     9,    10,    11,    12,    57,
+     154,   207,    63,   135,   136,    28,   547,    30,   152,   163,
+     118,   119,     0,   121,   152,   147,    84,   177,   162,   158,
+     180,    62,   160,   564,   163,   185,   186,   187,   188,    65,
+      66,    67,    68,    69,    70,    71,    25,    26,   152,   151,
+     160,   149,   152,   163,   158,   205,   206,    45,   158,    47,
+      73,    74,    75,    29,    77,    78,    79,    53,    62,   235,
+      56,    57,   340,   341,   342,    55,    56,   175,   176,   177,
+     178,   179,   180,   162,   161,   125,   126,   185,   186,   187,
+     188,    28,    30,    30,    27,    25,    26,   238,   239,   240,
+      17,    18,    17,    18,   202,   203,   204,   205,   206,    42,
+      43,    44,    45,    46,    47,    48,   151,    50,    17,    18,
+      17,    18,    17,    18,   158,    58,   486,   403,   488,   108,
+     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   309,   242,   102,   103,   104,   105,   106,
+     107,   317,   318,   319,   158,    77,    78,    18,   151,   151,
+     151,   118,   119,   120,   121,    18,   151,   156,    18,    18,
+     154,   154,   277,    30,   324,    18,    30,    60,    30,   277,
+     157,   157,   154,   152,    18,    18,   120,   309,    18,    18,
+     288,   152,    18,    21,    21,   317,   318,   319,     5,     6,
+       7,     8,     9,    10,    11,    12,    21,   305,   155,    64,
+     376,   377,   378,   154,   154,   356,   152,   322,   384,   154,
+      39,    30,   154,   154,   322,   323,   324,   154,   154,   154,
+     396,   397,   156,   154,   154,    30,   386,   155,   388,   389,
+     390,   152,   152,   152,   394,   152,   152,   152,   152,   152,
+     152,   152,   152,    30,   376,   377,   378,    15,   154,    15,
+     154,   152,   384,   156,   152,   152,   432,   433,   152,    30,
+     152,   437,    18,   439,   396,   397,   152,   443,    37,   152,
+     152,   152,   152,   449,   450,   451,   152,   152,   386,   387,
+     388,   389,   390,   152,   352,    39,   394,   395,   154,    18,
+      57,   152,    30,    18,   152,   152,   152,   152,   152,    15,
+     432,   433,   152,   154,   152,   437,   414,   439,   484,   485,
+     152,   443,    57,   158,   155,   491,    39,   449,   450,   451,
+     152,   156,   152,    15,   500,   152,   152,   155,   152,   152,
+     152,   152,   440,   493,   494,   495,    15,   155,   158,   155,
+     155,   155,   155,   155,   155,   155,   155,   155,   456,   517,
+     517,   527,   484,   485,   155,   155,   155,   155,   152,   491,
+      15,    15,   104,   104,   104,   525,   255,   104,   500,   545,
+     104,   256,   480,    43,    24,   483,   415,   130,    50,   414,
+     548,   548,    29,   235,     3,   493,   494,   495,    41,   575,
+     499,   499,   440,   420,    -1,   527,   572,   573,    -1,    -1,
+      -1,   577,    -1,    -1,   580,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   545,    -1,    -1,    -1,   525,   362,   363,
+     364,   365,   366,    -1,    -1,   369,   370,   371,   372,   373,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     572,   573,    -1,    -1,    -1,   577,    -1,    -1,   580,    -1,
+      -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    -1,    -1,    19,    20,    -1,
+      -1,    -1,    -1,    -1,   418,   419,    28,    -1,    30,    -1,
+      -1,   425,     3,     4,     5,     6,     7,     8,     9,    10,
       11,    12,    13,    14,    15,    16,    -1,    -1,    19,    20,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,    30,
-      -1,   422,   423,    -1,   425,    -1,   427,    -1,    -1,    -1,
-     431,    -1,    -1,    -1,    -1,    -1,   437,   438,   439,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    -1,    -1,    19,    20,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    28,    -1,    30,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   477,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   485,    -1,   487,     3,     4,     5,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   471,   472,   473,
+     474,    -1,   476,   477,   478,   479,    -1,     3,     4,     5,
        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
       16,    -1,    -1,    19,    20,    -1,    -1,    -1,    -1,    -1,
-     511,    -1,    28,    -1,    30,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,   529,    -1,
+     504,   505,    28,    -1,    30,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   153,    -1,    -1,   156,    -1,    -1,   159,    -1,
-     161,   162,    -1,   554,   555,    -1,    -1,    -1,   559,    -1,
-      -1,   562,    -1,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    -1,    -1,    19,
-      20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,   153,
-      30,    -1,   156,    -1,    -1,   159,    -1,   161,   162,    -1,
-      40,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    -1,    -1,    19,    20,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,    30,    -1,
+      -1,    -1,   536,    -1,   538,   539,    -1,    -1,    -1,    -1,
+      -1,   153,    -1,    -1,   156,    -1,    -1,   159,    -1,   161,
+     162,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    -1,    -1,    19,    20,
+      -1,    -1,   153,    -1,    -1,   156,    -1,    28,   159,    30,
+     161,   162,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    40,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    -1,    -1,    19,    20,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    28,    -1,    30,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,   153,    -1,    -1,
      156,    -1,    -1,   159,    -1,   161,     3,     4,     5,     6,
        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
       -1,    -1,    19,    20,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    28,    -1,    30,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    40,    -1,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    -1,
-      -1,    19,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      28,    -1,    30,   153,    -1,    -1,   156,    -1,    -1,   159,
-      -1,   161,    40,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    -1,    -1,    19,
-      20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,
-      30,   153,    -1,    -1,   156,    -1,   158,   159,    -1,   161,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    -1,    -1,    19,    20,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    28,    -1,    30,    -1,    -1,
+      -1,    -1,    -1,    40,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    -1,    -1,
+      19,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
+      -1,    30,   153,    -1,    -1,   156,    -1,    -1,   159,    -1,
+     161,    40,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    -1,    -1,    19,    20,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,    30,
+     153,    -1,    -1,   156,    -1,   158,   159,    -1,   161,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    -1,    -1,    19,    20,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    28,    -1,    30,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,   153,    -1,    -1,   156,
       -1,    -1,   159,    -1,   161,     3,     4,     5,     6,     7,
        8,     9,    10,    11,    12,    13,    14,    15,    16,    -1,
       -1,    19,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      28,    -1,    30,    -1,    -1,   153,    -1,    -1,   156,    -1,
-      -1,   159,    -1,   161,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    -1,    -1,
-      19,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
-      -1,    30,    -1,   153,    -1,    -1,   156,    -1,    -1,   159,
-      -1,   161,   102,   103,   104,   105,   106,   107,   108,   109,
-     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-     120,   121,    -1,    19,    20,    -1,    22,    23,    24,    -1,
-     153,    -1,    28,   156,    30,    -1,   159,    -1,   161,    -1,
-      27,    28,    -1,    30,    -1,    -1,    -1,    34,    35,    36,
-      -1,    -1,    -1,    -1,    -1,    42,    43,    44,    45,    46,
-      47,    48,    -1,    50,    51,    -1,    -1,    -1,    -1,    -1,
-      -1,    58,    59,    -1,    -1,   153,    63,    -1,   156,    -1,
-      -1,   159,    -1,   161,    80,    81,    82,    83,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-      96,    97,    98,    99,   100,   101,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   153,    -1,    -1,   156,    -1,    -1,
-     159,    -1,   161,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   127,    -1,   129,   130,   131,   132,   133,    -1,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,    -1,    -1,    -1,    -1,    -1,
-     156,    -1,    -1,   159,    -1,   161,    -1,    -1,   164,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
-      28,    -1,    30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      28,    -1,    30,    -1,   153,    -1,    -1,   156,    -1,    -1,
+     159,    -1,   161,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    -1,    -1,    19,
+      20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,
+      30,    -1,   153,    -1,    -1,   156,    -1,    -1,   159,    -1,
+     161,    -1,    27,    28,    -1,    30,    -1,    -1,    -1,    34,
+      35,    36,    -1,    -1,    -1,    -1,    -1,    42,    43,    44,
+      45,    46,    47,    48,    -1,    50,    51,    -1,    -1,   153,
+      -1,    -1,   156,    58,    59,   159,    -1,   161,    63,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1,
+      28,    -1,    30,    -1,    -1,   153,    -1,    -1,   156,    -1,
+      -1,   159,    -1,   161,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    80,    81,    82,    83,    84,    85,    86,    87,
+      -1,    -1,    -1,   153,    -1,    -1,   156,    -1,    -1,   159,
+      -1,   161,    80,    81,    82,    83,    84,    85,    86,    87,
       88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
       98,    99,   100,   101,    -1,    -1,    -1,    -1,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   127,
+      19,    20,    21,    22,    23,    24,    25,    26,    -1,    28,
+      -1,    30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   127,
       -1,   129,   130,   131,   132,   133,    -1,   135,   136,   137,
      138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-     148,   149,   150,    62,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     148,   149,   150,    62,    -1,    -1,    -1,    -1,   156,    -1,
+      -1,   159,    -1,   161,    -1,    -1,   164,    -1,    -1,    -1,
       -1,    80,    81,    82,    83,    84,    85,    86,    87,    88,
       89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-      99,   100,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      99,   100,   101,    -1,    -1,    -1,    -1,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,    26,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   127,    -1,
      129,   130,   131,   132,   133,    -1,   135,   136,   137,   138,
      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     159,    -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    60,    61,    -1,    -1,    -1,    -1,
+     149,   150,    62,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      76,    -1,    -1,    -1,    80,    81,    82,    83,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-      96,    97,    98,    99,   100,   101,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   127,    -1,   129,
+     130,   131,   132,   133,    -1,   135,   136,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   159,
+      -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    60,    61,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,
+      -1,    -1,    -1,    80,    81,    82,    83,    84,    85,    86,
+      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      97,    98,    99,   100,   101,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   122,   123,   124,    -1,
-      -1,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150
+      -1,    -1,    -1,    -1,    -1,   122,   123,   124,    -1,    -1,
+     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   150
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1673,43 +1684,45 @@
       97,    98,    99,   100,   101,   122,   123,   124,   127,   128,
      129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   168,   169,   170,   171,   173,   174,   235,   236,
-     238,   239,    30,    55,    56,   204,    18,    30,    30,   207,
-     190,   190,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,   175,   176,   178,   190,   195,   190,   157,
-     157,   152,   162,   154,    40,   193,   194,    17,    18,    21,
-      22,    23,    24,    25,    26,    62,   127,   129,   135,   136,
-     137,   159,   168,   169,   170,   171,   173,   174,   196,   221,
-     222,   223,   223,   223,   223,   224,    60,   181,   190,   190,
-     224,   190,   190,   232,   224,   224,   224,   224,   224,   190,
-     190,   190,   102,   103,   104,   105,   106,   107,   108,   109,
-     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-     120,   121,   172,   224,   224,   181,   125,   126,   152,   158,
-     152,   186,   186,    25,    26,    17,    18,   167,    18,    21,
-      22,    23,    24,   156,   159,   161,   164,   196,   222,   186,
-     186,   192,   192,   192,    40,   190,   210,   211,   212,   152,
-     155,    64,   220,   154,   154,   154,   154,   154,   195,   197,
-     154,   154,   154,   172,   154,   154,   152,   152,   188,   152,
+     149,   150,   168,   169,   170,   173,   174,   235,   236,   238,
+     239,    30,    55,    56,   204,    18,    30,    30,   207,   190,
+     190,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,   175,   176,   178,   190,   195,   190,   157,   157,
+     152,   162,   154,    40,   193,   194,    17,    18,    21,    22,
+      23,    24,    25,    26,    62,   100,   101,   127,   129,   135,
+     136,   137,   159,   168,   169,   170,   173,   174,   196,   221,
+     222,   223,   223,   223,   223,   224,    60,   181,   102,   103,
+     104,   105,   106,   107,   118,   119,   120,   121,   171,    25,
+      26,   108,   109,   110,   111,   112,   113,   114,   115,   116,
+     117,   118,   119,   120,   121,   172,   190,   190,   224,   190,
+     190,   232,   224,   224,   224,   224,   224,   190,   190,   190,
+     224,   224,   181,   125,   126,   152,   158,   152,   186,   186,
+      25,    26,    17,    18,   167,    18,    21,    22,    23,    24,
+     156,   159,   161,   164,   196,   222,   186,   186,   192,   192,
+     192,    40,   190,   210,   211,   212,   152,   155,    64,   220,
+     171,   172,   154,   154,   154,   154,   154,   195,   197,   154,
+     154,   154,   154,   154,   152,   152,   188,   190,   190,   152,
      183,   152,   183,   223,   156,   152,   152,   152,   152,   152,
-     152,   223,   223,   223,   190,   152,    39,   188,   190,   224,
-      30,    37,    57,   184,   187,   158,   197,   197,   162,   197,
-      30,   158,   160,   208,   209,   152,   155,    40,    30,   195,
-     195,   195,   195,   195,   152,   160,   195,   195,   195,   154,
-     195,   195,    15,    15,   223,    10,    57,    10,   152,   237,
-     223,   156,   224,   190,   224,   224,   224,   152,   152,   152,
-     223,   224,   190,   223,   223,   152,    30,    18,   186,   158,
-     160,   162,    40,   210,   184,   185,   152,   237,   152,   152,
-     152,   152,   195,   152,   152,   152,   195,   152,    39,   223,
-     223,   154,   223,    18,   223,   224,   233,   152,   223,   152,
-     152,   152,   223,   223,   223,   152,   154,   190,    57,   182,
-      30,   155,   195,   195,   195,   195,   195,   195,   195,   152,
-     195,   190,   152,   156,   233,   234,   152,   183,   183,   152,
-     223,   152,   224,   224,   224,   223,   234,   223,    18,   152,
-     155,   152,   152,   155,   155,   155,   195,   155,   155,    15,
-     158,   177,   230,   155,   224,   158,   223,   155,   155,   195,
-     195,   195,   155,   223,   221,   158,   177,    39,   158,   155,
-     155,   155,   152,   221,    15,    15,   152,   223,   223,    15,
-     228,   223,    15,   223
+     152,   223,   223,   223,   152,    39,   188,   190,   224,    30,
+      37,    57,   184,   187,   158,   197,   197,   162,   197,    30,
+     158,   160,   208,   209,   152,   155,    40,    30,   154,   154,
+     195,   195,   195,   195,   195,   152,   160,   195,   195,   195,
+     195,   195,    15,    15,   223,   223,   223,    10,    57,    10,
+     152,   237,   223,   156,   224,   190,   224,   224,   224,   152,
+     152,   152,   224,   190,   223,   223,   152,    30,    18,   186,
+     158,   160,   162,    40,   210,   184,   185,   152,   195,   195,
+     237,   152,   152,   152,   152,   195,   152,   152,   152,   152,
+      39,   223,   223,   154,   152,   152,   223,    18,   223,   224,
+     233,   152,   223,   152,   152,   152,   223,   223,   223,   154,
+     190,    57,   182,    30,   152,   152,   155,   195,   195,   195,
+     195,   195,   195,   195,   195,   190,   152,   156,   233,   234,
+     223,   223,   152,   183,   183,   152,   223,   152,   224,   224,
+     224,   234,   223,    18,   195,   195,   152,   155,   152,   152,
+     155,   155,   155,   155,   155,    15,   158,   177,   230,   155,
+     155,   155,   224,   158,   223,   155,   155,   155,   195,   195,
+     195,   223,   221,   158,   177,    39,   158,   155,   155,   155,
+     152,   221,    15,    15,   152,   223,   223,    15,   228,   223,
+      15,   223
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2378,26 +2391,26 @@
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 77:
+        case 81:
 #line 357 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[-1].String);
   ;}
     break;
 
-  case 78:
+  case 82:
 #line 360 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string(""); 
   ;}
     break;
 
-  case 86:
+  case 90:
 #line 367 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(""); ;}
     break;
 
-  case 93:
+  case 97:
 #line 372 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *(yyvsp[-1].String) += *(yyvsp[0].String); 
@@ -2406,27 +2419,27 @@
     ;}
     break;
 
-  case 94:
+  case 98:
 #line 377 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(""); ;}
     break;
 
-  case 95:
+  case 99:
 #line 382 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 96:
+  case 100:
 #line 383 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); (yyval.String) = (yyvsp[-1].String); ;}
     break;
 
-  case 97:
+  case 101:
 #line 386 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 98:
+  case 102:
 #line 387 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyvsp[-1].String)->insert(0, ", "); 
@@ -2436,7 +2449,7 @@
   ;}
     break;
 
-  case 99:
+  case 103:
 #line 395 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
@@ -2445,17 +2458,17 @@
   ;}
     break;
 
-  case 100:
+  case 104:
 #line 401 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 102:
+  case 106:
 #line 405 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 103:
+  case 107:
 #line 406 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
       (yyvsp[-1].String)->insert(0, ", ");
@@ -2466,7 +2479,7 @@
     ;}
     break;
 
-  case 105:
+  case 109:
 #line 416 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
       *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
@@ -2475,7 +2488,7 @@
     ;}
     break;
 
-  case 123:
+  case 127:
 #line 438 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type).newTy = (yyvsp[0].String); 
@@ -2483,7 +2496,7 @@
   ;}
     break;
 
-  case 124:
+  case 128:
 #line 442 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type).newTy = (yyvsp[0].String);
@@ -2491,14 +2504,14 @@
   ;}
     break;
 
-  case 125:
+  case 129:
 #line 446 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type) = (yyvsp[0].Type); 
   ;}
     break;
 
-  case 126:
+  case 130:
 #line 449 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                   // Type UpReference
     (yyvsp[0].String)->insert(0, "\\");
@@ -2507,7 +2520,7 @@
   ;}
     break;
 
-  case 127:
+  case 131:
 #line 454 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {           // Function derived type?
     *(yyvsp[-3].Type).newTy += "( " + *(yyvsp[-1].String) + " )";
@@ -2517,7 +2530,7 @@
   ;}
     break;
 
-  case 128:
+  case 132:
 #line 460 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {          // Sized array type?
     (yyvsp[-3].String)->insert(0,"[ ");
@@ -2529,7 +2542,7 @@
   ;}
     break;
 
-  case 129:
+  case 133:
 #line 468 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {          // Packed array type?
     (yyvsp[-3].String)->insert(0,"< ");
@@ -2541,7 +2554,7 @@
   ;}
     break;
 
-  case 130:
+  case 134:
 #line 476 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                        // Structure type?
     (yyvsp[-1].String)->insert(0, "{ ");
@@ -2551,7 +2564,7 @@
   ;}
     break;
 
-  case 131:
+  case 135:
 #line 482 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                                  // Empty structure type?
     (yyval.Type).newTy = new std::string("{}");
@@ -2559,7 +2572,7 @@
   ;}
     break;
 
-  case 132:
+  case 136:
 #line 486 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                             // Pointer type?
     *(yyvsp[-1].Type).newTy += '*';
@@ -2569,14 +2582,14 @@
   ;}
     break;
 
-  case 133:
+  case 137:
 #line 497 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].Type).newTy;
   ;}
     break;
 
-  case 134:
+  case 138:
 #line 500 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].Type).newTy;
@@ -2585,7 +2598,7 @@
   ;}
     break;
 
-  case 136:
+  case 140:
 #line 509 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", ...";
@@ -2594,21 +2607,21 @@
   ;}
     break;
 
-  case 137:
+  case 141:
 #line 514 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
-  case 138:
+  case 142:
 #line 517 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string();
   ;}
     break;
 
-  case 139:
+  case 143:
 #line 527 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { // Nonempty unsized arr
     (yyval.Const).type = (yyvsp[-3].Type);
@@ -2618,7 +2631,7 @@
   ;}
     break;
 
-  case 140:
+  case 144:
 #line 533 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
@@ -2627,7 +2640,7 @@
   ;}
     break;
 
-  case 141:
+  case 145:
 #line 538 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
@@ -2637,7 +2650,7 @@
   ;}
     break;
 
-  case 142:
+  case 146:
 #line 544 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { // Nonempty unsized arr
     (yyval.Const).type = (yyvsp[-3].Type);
@@ -2647,7 +2660,7 @@
   ;}
     break;
 
-  case 143:
+  case 147:
 #line 550 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-3].Type);
@@ -2657,7 +2670,7 @@
   ;}
     break;
 
-  case 144:
+  case 148:
 #line 556 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
@@ -2666,7 +2679,7 @@
   ;}
     break;
 
-  case 145:
+  case 149:
 #line 561 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2676,7 +2689,7 @@
   ;}
     break;
 
-  case 146:
+  case 150:
 #line 567 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2686,7 +2699,7 @@
   ;}
     break;
 
-  case 147:
+  case 151:
 #line 573 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2696,7 +2709,7 @@
   ;}
     break;
 
-  case 148:
+  case 152:
 #line 579 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2706,7 +2719,7 @@
   ;}
     break;
 
-  case 149:
+  case 153:
 #line 585 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2716,7 +2729,7 @@
   ;}
     break;
 
-  case 150:
+  case 154:
 #line 591 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {      // integral constants
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2726,7 +2739,7 @@
   ;}
     break;
 
-  case 151:
+  case 155:
 #line 597 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {            // integral constants
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2736,7 +2749,7 @@
   ;}
     break;
 
-  case 152:
+  case 156:
 #line 603 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                      // Boolean constants
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2746,7 +2759,7 @@
   ;}
     break;
 
-  case 153:
+  case 157:
 #line 609 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                     // Boolean constants
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2756,7 +2769,7 @@
   ;}
     break;
 
-  case 154:
+  case 158:
 #line 615 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                   // Float & Double constants
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -2766,7 +2779,7 @@
   ;}
     break;
 
-  case 155:
+  case 159:
 #line 623 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string source = *(yyvsp[-3].Const).cnst;
@@ -2784,7 +2797,7 @@
   ;}
     break;
 
-  case 156:
+  case 160:
 #line 637 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-4].String) += "(" + *(yyvsp[-2].Const).cnst;
@@ -2800,7 +2813,7 @@
   ;}
     break;
 
-  case 157:
+  case 161:
 #line 649 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
@@ -2809,7 +2822,7 @@
   ;}
     break;
 
-  case 158:
+  case 162:
 #line 654 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* op = getDivRemOpcode(*(yyvsp[-5].String), (yyvsp[-3].Const).type); 
@@ -2819,7 +2832,7 @@
   ;}
     break;
 
-  case 159:
+  case 163:
 #line 660 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
@@ -2828,7 +2841,7 @@
   ;}
     break;
 
-  case 160:
+  case 164:
 #line 665 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
 #if UPGRADE_SETCOND_OPS
@@ -2840,7 +2853,7 @@
   ;}
     break;
 
-  case 161:
+  case 165:
 #line 673 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
@@ -2849,9 +2862,18 @@
   ;}
     break;
 
-  case 162:
+  case 166:
 #line 678 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
+    *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
+    delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
+    (yyval.String) = (yyvsp[-6].String);
+  ;}
+    break;
+
+  case 167:
+#line 683 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
     const char* shiftop = (yyvsp[-5].String)->c_str();
     if (*(yyvsp[-5].String) == "shr")
       shiftop = ((yyvsp[-3].Const).type.isUnsigned()) ? "lshr" : "ashr";
@@ -2861,8 +2883,8 @@
   ;}
     break;
 
-  case 163:
-#line 686 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 168:
+#line 691 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2870,8 +2892,8 @@
   ;}
     break;
 
-  case 164:
-#line 691 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 169:
+#line 696 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2879,8 +2901,8 @@
   ;}
     break;
 
-  case 165:
-#line 696 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 170:
+#line 701 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -2888,8 +2910,8 @@
   ;}
     break;
 
-  case 166:
-#line 706 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 171:
+#line 711 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].Const).cnst;
     (yyvsp[0].Const).destroy();
@@ -2897,26 +2919,26 @@
   ;}
     break;
 
-  case 167:
-#line 711 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 172:
+#line 716 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(*(yyvsp[0].Const).cnst); (yyvsp[0].Const).destroy(); ;}
     break;
 
-  case 170:
-#line 726 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 175:
+#line 731 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
 ;}
     break;
 
-  case 171:
-#line 731 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 176:
+#line 736 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
-  case 172:
-#line 734 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 177:
+#line 739 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -2924,34 +2946,34 @@
   ;}
     break;
 
-  case 173:
-#line 739 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 178:
+#line 744 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "module asm " << " " << *(yyvsp[0].String) << "\n";
     (yyval.String) = 0;
   ;}
     break;
 
-  case 174:
-#line 743 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 179:
+#line 748 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "implementation\n";
     (yyval.String) = 0;
   ;}
     break;
 
-  case 175:
-#line 747 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 180:
+#line 752 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = 0; ;}
     break;
 
-  case 177:
-#line 749 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 182:
+#line 754 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "external"; ;}
     break;
 
-  case 178:
-#line 752 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 183:
+#line 757 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     EnumeratedTypes.push_back((yyvsp[0].Type));
     if (!(yyvsp[-2].String)->empty()) {
@@ -2966,8 +2988,8 @@
   ;}
     break;
 
-  case 179:
-#line 764 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 184:
+#line 769 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {       // Function prototypes can be in const pool
     *O << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -2975,8 +2997,8 @@
   ;}
     break;
 
-  case 180:
-#line 769 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 185:
+#line 774 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {  // Asm blocks can be in the const pool
     *O << *(yyvsp[-2].String) << " " << *(yyvsp[-1].String) << " " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-2].String); delete (yyvsp[-1].String); delete (yyvsp[0].String); 
@@ -2984,8 +3006,8 @@
   ;}
     break;
 
-  case 181:
-#line 774 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 186:
+#line 779 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty())
       *O << *(yyvsp[-4].String) << " = ";
@@ -2995,8 +3017,8 @@
   ;}
     break;
 
-  case 182:
-#line 781 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 187:
+#line 786 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty())
       *O << *(yyvsp[-4].String) << " = ";
@@ -3006,8 +3028,8 @@
   ;}
     break;
 
-  case 183:
-#line 788 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 188:
+#line 793 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty())
       *O << *(yyvsp[-4].String) << " = ";
@@ -3017,8 +3039,8 @@
   ;}
     break;
 
-  case 184:
-#line 795 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 189:
+#line 800 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty())
       *O << *(yyvsp[-4].String) << " = ";
@@ -3028,8 +3050,8 @@
   ;}
     break;
 
-  case 185:
-#line 802 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 190:
+#line 807 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *O << *(yyvsp[-1].String) << " " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-1].String); delete (yyvsp[0].String);
@@ -3037,8 +3059,8 @@
   ;}
     break;
 
-  case 186:
-#line 807 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 191:
+#line 812 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[-2].String) << " = " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[-2].String); delete (yyvsp[0].String);
@@ -3046,15 +3068,15 @@
   ;}
     break;
 
-  case 187:
-#line 812 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 192:
+#line 817 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.String) = 0;
   ;}
     break;
 
-  case 191:
-#line 822 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 196:
+#line 827 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3062,8 +3084,8 @@
   ;}
     break;
 
-  case 192:
-#line 827 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 197:
+#line 832 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     if (*(yyvsp[0].String) == "64")
@@ -3073,8 +3095,8 @@
   ;}
     break;
 
-  case 193:
-#line 834 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 198:
+#line 839 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3082,8 +3104,8 @@
   ;}
     break;
 
-  case 194:
-#line 839 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 199:
+#line 844 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3091,8 +3113,8 @@
   ;}
     break;
 
-  case 195:
-#line 846 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 200:
+#line 851 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-1].String)->insert(0, "[ ");
     *(yyvsp[-1].String) += " ]";
@@ -3100,8 +3122,8 @@
   ;}
     break;
 
-  case 196:
-#line 853 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 201:
+#line 858 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3109,20 +3131,20 @@
   ;}
     break;
 
-  case 198:
-#line 859 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 203:
+#line 864 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string();
   ;}
     break;
 
-  case 202:
-#line 868 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 207:
+#line 873 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 203:
-#line 870 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 208:
+#line 875 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
   (yyval.String) = (yyvsp[-1].Type).newTy;
   if (!(yyvsp[0].String)->empty())
@@ -3131,30 +3153,30 @@
 ;}
     break;
 
-  case 204:
-#line 877 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 209:
+#line 882 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
   ;}
     break;
 
-  case 205:
-#line 881 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 210:
+#line 886 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
-  case 206:
-#line 885 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 211:
+#line 890 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
-  case 207:
-#line 888 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 212:
+#line 893 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", ...";
     (yyval.String) = (yyvsp[-2].String);
@@ -3162,20 +3184,20 @@
   ;}
     break;
 
-  case 208:
-#line 893 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 213:
+#line 898 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
-  case 209:
-#line 896 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 214:
+#line 901 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 210:
-#line 899 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 215:
+#line 904 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-7].String)->empty()) {
       *(yyvsp[-7].String) += " ";
@@ -3196,18 +3218,18 @@
   ;}
     break;
 
-  case 211:
-#line 918 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 216:
+#line 923 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("{"); delete (yyvsp[0].String); ;}
     break;
 
-  case 212:
-#line 919 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 217:
+#line 924 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string ("{"); ;}
     break;
 
-  case 213:
-#line 921 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 218:
+#line 926 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
   if (!(yyvsp[-2].String)->empty()) {
     *O << *(yyvsp[-2].String) << " ";
@@ -3218,18 +3240,18 @@
 ;}
     break;
 
-  case 214:
-#line 930 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 219:
+#line 935 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("}"); delete (yyvsp[0].String); ;}
     break;
 
-  case 215:
-#line 931 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 220:
+#line 936 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("}"); ;}
     break;
 
-  case 216:
-#line 933 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 221:
+#line 938 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
   if ((yyvsp[-1].String))
     *O << *(yyvsp[-1].String);
@@ -3238,13 +3260,13 @@
 ;}
     break;
 
-  case 217:
-#line 941 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 222:
+#line 946 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 220:
-#line 947 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 225:
+#line 952 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     if (!(yyvsp[-1].String)->empty())
       *(yyvsp[-2].String) += " " + *(yyvsp[-1].String);
@@ -3255,13 +3277,13 @@
   ;}
     break;
 
-  case 221:
-#line 960 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 226:
+#line 965 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 231:
-#line 966 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 236:
+#line 971 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyvsp[-1].String)->insert(0, "<");
     *(yyvsp[-1].String) += ">";
@@ -3269,8 +3291,8 @@
   ;}
     break;
 
-  case 233:
-#line 972 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 238:
+#line 977 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-3].String)->empty()) {
       *(yyvsp[-4].String) += " " + *(yyvsp[-3].String);
@@ -3281,8 +3303,8 @@
   ;}
     break;
 
-  case 236:
-#line 985 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 241:
+#line 990 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value).val = (yyvsp[0].String);
     (yyval.Value).constant = false;
@@ -3291,8 +3313,8 @@
   ;}
     break;
 
-  case 237:
-#line 991 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 242:
+#line 996 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value).val = (yyvsp[0].String);
     (yyval.Value).constant = true;
@@ -3301,8 +3323,8 @@
   ;}
     break;
 
-  case 238:
-#line 1002 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 243:
+#line 1007 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value) = (yyvsp[0].Value);
     (yyval.Value).type = (yyvsp[-1].Type);
@@ -3310,29 +3332,29 @@
   ;}
     break;
 
-  case 239:
-#line 1008 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 244:
+#line 1013 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
-  case 240:
-#line 1011 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 245:
+#line 1016 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { // Do not allow functions with 0 basic blocks   
     (yyval.String) = 0;
   ;}
     break;
 
-  case 241:
-#line 1019 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 246:
+#line 1024 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
-  case 242:
-#line 1023 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 247:
+#line 1028 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -3340,15 +3362,15 @@
   ;}
     break;
 
-  case 243:
-#line 1028 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 248:
+#line 1033 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
-  case 244:
-#line 1031 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 249:
+#line 1036 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -3356,13 +3378,13 @@
   ;}
     break;
 
-  case 246:
-#line 1037 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 251:
+#line 1042 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "unwind"; ;}
     break;
 
-  case 247:
-#line 1039 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 252:
+#line 1044 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {              // Return with a result...
     *O << "    " << *(yyvsp[-1].String) << " " << *(yyvsp[0].Value).val << "\n";
     delete (yyvsp[-1].String); (yyvsp[0].Value).destroy();
@@ -3370,8 +3392,8 @@
   ;}
     break;
 
-  case 248:
-#line 1044 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 253:
+#line 1049 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                                       // Return with no result...
     *O << "    " << *(yyvsp[-1].String) << " " << *(yyvsp[0].Type).newTy << "\n";
     delete (yyvsp[-1].String); (yyvsp[0].Type).destroy();
@@ -3379,8 +3401,8 @@
   ;}
     break;
 
-  case 249:
-#line 1049 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 254:
+#line 1054 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                         // Unconditional Branch...
     *O << "    " << *(yyvsp[-2].String) << " " << *(yyvsp[-1].Type).newTy << " " << *(yyvsp[0].Value).val << "\n";
     delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy();
@@ -3388,8 +3410,8 @@
   ;}
     break;
 
-  case 250:
-#line 1054 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 255:
+#line 1059 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {  
     *O << "    " << *(yyvsp[-8].String) << " " << *(yyvsp[-7].Type).newTy << " " << *(yyvsp[-6].Value).val << ", " 
        << *(yyvsp[-4].Type).newTy << " " << *(yyvsp[-3].Value).val << ", " << *(yyvsp[-1].Type).newTy << " " 
@@ -3400,8 +3422,8 @@
   ;}
     break;
 
-  case 251:
-#line 1062 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 256:
+#line 1067 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[-8].String) << " " << *(yyvsp[-7].Type).newTy << " " << *(yyvsp[-6].Value).val << ", " 
        << *(yyvsp[-4].Type).newTy << " " << *(yyvsp[-3].Value).val << " [" << *(yyvsp[-1].String) << " ]\n";
@@ -3411,8 +3433,8 @@
   ;}
     break;
 
-  case 252:
-#line 1069 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 257:
+#line 1074 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[-7].String) << " " << *(yyvsp[-6].Type).newTy << " " << *(yyvsp[-5].Value).val << ", " 
        << *(yyvsp[-3].Type).newTy << " " << *(yyvsp[-2].Value).val << "[]\n";
@@ -3421,8 +3443,8 @@
   ;}
     break;
 
-  case 253:
-#line 1076 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 258:
+#line 1081 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    ";
     if (!(yyvsp[-13].String)->empty())
@@ -3444,8 +3466,8 @@
   ;}
     break;
 
-  case 254:
-#line 1095 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 259:
+#line 1100 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -3453,8 +3475,8 @@
   ;}
     break;
 
-  case 255:
-#line 1100 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 260:
+#line 1105 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << "\n";
     delete (yyvsp[0].String);
@@ -3462,8 +3484,8 @@
   ;}
     break;
 
-  case 256:
-#line 1106 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 261:
+#line 1111 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + " " + *(yyvsp[-3].String) + ", " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val;
     (yyvsp[-4].Type).destroy(); delete (yyvsp[-3].String); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy();
@@ -3471,8 +3493,8 @@
   ;}
     break;
 
-  case 257:
-#line 1111 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 262:
+#line 1116 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-3].String)->insert(0, *(yyvsp[-4].Type).newTy + " " );
     *(yyvsp[-3].String) += ", " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val;
@@ -3481,8 +3503,8 @@
   ;}
     break;
 
-  case 258:
-#line 1119 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 263:
+#line 1124 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-1].String)->empty())
       *(yyvsp[-1].String) += " = ";
@@ -3492,8 +3514,8 @@
   ;}
     break;
 
-  case 259:
-#line 1128 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 264:
+#line 1133 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {    // Used for PHI nodes
     (yyvsp[-3].Value).val->insert(0, *(yyvsp[-5].Type).newTy + "[");
     *(yyvsp[-3].Value).val += "," + *(yyvsp[-1].Value).val + "]";
@@ -3503,8 +3525,8 @@
   ;}
     break;
 
-  case 260:
-#line 1135 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 265:
+#line 1140 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += ", [" + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + "]";
     (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
@@ -3512,34 +3534,34 @@
   ;}
     break;
 
-  case 261:
-#line 1143 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 266:
+#line 1148 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.ValList) = new ValueList();
     (yyval.ValList)->push_back((yyvsp[0].Value));
   ;}
     break;
 
-  case 262:
-#line 1147 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 267:
+#line 1152 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-2].ValList)->push_back((yyvsp[0].Value));
     (yyval.ValList) = (yyvsp[-2].ValList);
   ;}
     break;
 
-  case 263:
-#line 1154 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 268:
+#line 1159 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = (yyvsp[0].ValList); ;}
     break;
 
-  case 264:
-#line 1155 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 269:
+#line 1160 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = new ValueList(); ;}
     break;
 
-  case 265:
-#line 1159 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 270:
+#line 1164 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3547,8 +3569,8 @@
   ;}
     break;
 
-  case 267:
-#line 1167 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 272:
+#line 1172 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* op = getDivRemOpcode(*(yyvsp[-4].String), (yyvsp[-3].Type)); 
     (yyval.String) = new std::string(op);
@@ -3557,8 +3579,8 @@
   ;}
     break;
 
-  case 268:
-#line 1173 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 273:
+#line 1178 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-4].String) += " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-3].Type).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3566,8 +3588,8 @@
   ;}
     break;
 
-  case 269:
-#line 1178 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 274:
+#line 1183 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
 #if UPGRADE_SETCOND_OPS
     *(yyvsp[-4].String) = getCompareOp(*(yyvsp[-4].String), (yyvsp[-3].Type));
@@ -3578,8 +3600,8 @@
   ;}
     break;
 
-  case 270:
-#line 1186 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 275:
+#line 1191 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += " " + *(yyvsp[-5].String) + " " + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + ")";
     delete (yyvsp[-5].String); (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
@@ -3587,8 +3609,17 @@
   ;}
     break;
 
-  case 271:
-#line 1191 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 276:
+#line 1196 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-6].String) += " " + *(yyvsp[-5].String) + " " + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + ")";
+    delete (yyvsp[-5].String); (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
+    (yyval.String) = (yyvsp[-6].String);
+  ;}
+    break;
+
+  case 277:
+#line 1201 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
     (yyvsp[0].Value).destroy();
@@ -3596,8 +3627,8 @@
   ;}
     break;
 
-  case 272:
-#line 1196 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 278:
+#line 1206 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* shiftop = (yyvsp[-3].String)->c_str();
     if (*(yyvsp[-3].String) == "shr")
@@ -3608,8 +3639,8 @@
   ;}
     break;
 
-  case 273:
-#line 1204 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 279:
+#line 1214 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string source = *(yyvsp[-2].Value).val;
     TypeInfo SrcTy = (yyvsp[-2].Value).type;
@@ -3626,8 +3657,8 @@
   ;}
     break;
 
-  case 274:
-#line 1218 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 280:
+#line 1228 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3635,8 +3666,8 @@
   ;}
     break;
 
-  case 275:
-#line 1223 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 281:
+#line 1233 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Type).newTy;
     (yyvsp[-2].Value).destroy(); (yyvsp[0].Type).destroy();
@@ -3644,8 +3675,8 @@
   ;}
     break;
 
-  case 276:
-#line 1228 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 282:
+#line 1238 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3653,8 +3684,8 @@
   ;}
     break;
 
-  case 277:
-#line 1233 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 283:
+#line 1243 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3662,8 +3693,8 @@
   ;}
     break;
 
-  case 278:
-#line 1238 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 284:
+#line 1248 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
@@ -3671,8 +3702,8 @@
   ;}
     break;
 
-  case 279:
-#line 1243 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 285:
+#line 1253 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3680,8 +3711,8 @@
   ;}
     break;
 
-  case 280:
-#line 1248 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 286:
+#line 1258 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-5].String)->empty())
       *(yyvsp[-6].String) += " " + *(yyvsp[-5].String);
@@ -3701,23 +3732,23 @@
   ;}
     break;
 
-  case 282:
-#line 1270 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 288:
+#line 1280 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = (yyvsp[0].ValList); ;}
     break;
 
-  case 283:
-#line 1271 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 289:
+#line 1281 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {  (yyval.ValList) = new ValueList(); ;}
     break;
 
-  case 285:
-#line 1276 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 291:
+#line 1286 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 286:
-#line 1279 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 292:
+#line 1289 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy;
     if (!(yyvsp[0].String)->empty())
@@ -3727,8 +3758,8 @@
   ;}
     break;
 
-  case 287:
-#line 1286 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 293:
+#line 1296 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + ", " + *(yyvsp[-2].Type).newTy + " " + *(yyvsp[-1].Value).val;
     if (!(yyvsp[0].String)->empty())
@@ -3738,8 +3769,8 @@
   ;}
     break;
 
-  case 288:
-#line 1293 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 294:
+#line 1303 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy;
     if (!(yyvsp[0].String)->empty())
@@ -3749,8 +3780,8 @@
   ;}
     break;
 
-  case 289:
-#line 1300 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 295:
+#line 1310 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + ", " + *(yyvsp[-2].Type).newTy + " " + *(yyvsp[-1].Value).val;
     if (!(yyvsp[0].String)->empty())
@@ -3760,8 +3791,8 @@
   ;}
     break;
 
-  case 290:
-#line 1307 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 296:
+#line 1317 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
     (yyvsp[0].Value).destroy();
@@ -3769,8 +3800,8 @@
   ;}
     break;
 
-  case 291:
-#line 1312 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 297:
+#line 1322 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-3].String)->empty())
       *(yyvsp[-3].String) += " ";
@@ -3780,8 +3811,8 @@
   ;}
     break;
 
-  case 292:
-#line 1319 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 298:
+#line 1329 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-5].String)->empty())
       *(yyvsp[-5].String) += " ";
@@ -3791,8 +3822,8 @@
   ;}
     break;
 
-  case 293:
-#line 1326 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 299:
+#line 1336 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     // Upgrade the indices
     for (unsigned i = 0; i < (yyvsp[0].ValList)->size(); ++i) {
@@ -3823,7 +3854,7 @@
     }
 
 /* Line 1126 of yacc.c.  */
-#line 3827 "UpgradeParser.tab.c"
+#line 3858 "UpgradeParser.tab.c"
 
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -4091,7 +4122,7 @@
 }
 
 
-#line 1350 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1360 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
 
 
 int yyerror(const char *ErrorMsg) {


Index: llvm/tools/llvm-upgrade/UpgradeParser.y
diff -u llvm/tools/llvm-upgrade/UpgradeParser.y:1.16 llvm/tools/llvm-upgrade/UpgradeParser.y:1.17
--- llvm/tools/llvm-upgrade/UpgradeParser.y:1.16	Sat Dec  2 21:15:23 2006
+++ llvm/tools/llvm-upgrade/UpgradeParser.y	Sun Dec  3 01:10:26 2006
@@ -311,8 +311,8 @@
 %type <String> MemoryInst SymbolicValueRef OptSideEffect GlobalType
 %type <String> FnDeclareLinkage BasicBlockList BigOrLittle AsmBlock
 %type <String> Name ConstValueRef ConstVector External
-%type <String> ShiftOps SetCondOps LogicalOps ArithmeticOps CastOps CompareOps
-%type <String> Predicates
+%type <String> ShiftOps SetCondOps LogicalOps ArithmeticOps CastOps
+%type <String> IPredicates FPredicates
 
 %type <ValList> ValueRefList ValueRefListE IndexList
 
@@ -338,9 +338,9 @@
              | REM | UREM | SREM | FREM;
 LogicalOps   : AND | OR | XOR;
 SetCondOps   : SETLE | SETGE | SETLT | SETGT | SETEQ | SETNE;
-CompareOps   : ICMP | FCMP;
-Predicates   : EQ | NE | SLT | SGT | SLE | SGE | ULT | UGT | ULE | UGE
-             | OEQ | ONE | OLT | OGT | OLE | OGE | ORD | UNO | UEQ | UNE  ;
+IPredicates  : EQ | NE | SLT | SGT | SLE | SGE | ULT | UGT | ULE | UGE;
+FPredicates  : OEQ | ONE | OLT | OGT | OLE | OGE | ORD | UNO | UEQ | UNE
+             | ULT | UGT | ULE | UGE | TRUETOK | FALSETOK;
 ShiftOps     : SHL | SHR | ASHR | LSHR;
 CastOps      : TRUNC | ZEXT | SEXT | FPTRUNC | FPEXT | FPTOUI | FPTOSI | 
                UITOFP | SITOFP | PTRTOINT | INTTOPTR | BITCAST | CAST
@@ -670,7 +670,12 @@
     $3.destroy(); $5.destroy();
     $$ = $1;
   }
-  | CompareOps Predicates '(' ConstVal ',' ConstVal ')' {
+  | ICMP IPredicates '(' ConstVal ',' ConstVal ')' {
+    *$1 += "(" + *$2 + "," + *$4.cnst + "," + *$6.cnst + ")";
+    delete $2; $4.destroy(); $6.destroy();
+    $$ = $1;
+  }
+  | FCMP FPredicates '(' ConstVal ',' ConstVal ')' {
     *$1 += "(" + *$2 + "," + *$4.cnst + "," + *$6.cnst + ")";
     delete $2; $4.destroy(); $6.destroy();
     $$ = $1;
@@ -1183,7 +1188,12 @@
     $2.destroy(); $3.destroy(); $5.destroy();
     $$ = $1;
   }
-  | CompareOps Predicates Types ValueRef ',' ValueRef ')' {
+  | ICMP IPredicates Types ValueRef ',' ValueRef ')' {
+    *$1 += " " + *$2 + " " + *$4.val + "," + *$6.val + ")";
+    delete $2; $4.destroy(); $6.destroy();
+    $$ = $1;
+  }
+  | FCMP FPredicates Types ValueRef ',' ValueRef ')' {
     *$1 += " " + *$2 + " " + *$4.val + "," + *$6.val + ")";
     delete $2; $4.destroy(); $6.destroy();
     $$ = $1;


Index: llvm/tools/llvm-upgrade/UpgradeParser.y.cvs
diff -u llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.16 llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.17
--- llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.16	Sat Dec  2 21:16:48 2006
+++ llvm/tools/llvm-upgrade/UpgradeParser.y.cvs	Sun Dec  3 01:10:26 2006
@@ -311,8 +311,8 @@
 %type <String> MemoryInst SymbolicValueRef OptSideEffect GlobalType
 %type <String> FnDeclareLinkage BasicBlockList BigOrLittle AsmBlock
 %type <String> Name ConstValueRef ConstVector External
-%type <String> ShiftOps SetCondOps LogicalOps ArithmeticOps CastOps CompareOps
-%type <String> Predicates
+%type <String> ShiftOps SetCondOps LogicalOps ArithmeticOps CastOps
+%type <String> IPredicates FPredicates
 
 %type <ValList> ValueRefList ValueRefListE IndexList
 
@@ -338,9 +338,9 @@
              | REM | UREM | SREM | FREM;
 LogicalOps   : AND | OR | XOR;
 SetCondOps   : SETLE | SETGE | SETLT | SETGT | SETEQ | SETNE;
-CompareOps   : ICMP | FCMP;
-Predicates   : EQ | NE | SLT | SGT | SLE | SGE | ULT | UGT | ULE | UGE
-             | OEQ | ONE | OLT | OGT | OLE | OGE | ORD | UNO | UEQ | UNE  ;
+IPredicates  : EQ | NE | SLT | SGT | SLE | SGE | ULT | UGT | ULE | UGE;
+FPredicates  : OEQ | ONE | OLT | OGT | OLE | OGE | ORD | UNO | UEQ | UNE
+             | ULT | UGT | ULE | UGE | TRUETOK | FALSETOK;
 ShiftOps     : SHL | SHR | ASHR | LSHR;
 CastOps      : TRUNC | ZEXT | SEXT | FPTRUNC | FPEXT | FPTOUI | FPTOSI | 
                UITOFP | SITOFP | PTRTOINT | INTTOPTR | BITCAST | CAST
@@ -670,7 +670,12 @@
     $3.destroy(); $5.destroy();
     $$ = $1;
   }
-  | CompareOps Predicates '(' ConstVal ',' ConstVal ')' {
+  | ICMP IPredicates '(' ConstVal ',' ConstVal ')' {
+    *$1 += "(" + *$2 + "," + *$4.cnst + "," + *$6.cnst + ")";
+    delete $2; $4.destroy(); $6.destroy();
+    $$ = $1;
+  }
+  | FCMP FPredicates '(' ConstVal ',' ConstVal ')' {
     *$1 += "(" + *$2 + "," + *$4.cnst + "," + *$6.cnst + ")";
     delete $2; $4.destroy(); $6.destroy();
     $$ = $1;
@@ -1183,7 +1188,12 @@
     $2.destroy(); $3.destroy(); $5.destroy();
     $$ = $1;
   }
-  | CompareOps Predicates Types ValueRef ',' ValueRef ')' {
+  | ICMP IPredicates Types ValueRef ',' ValueRef ')' {
+    *$1 += " " + *$2 + " " + *$4.val + "," + *$6.val + ")";
+    delete $2; $4.destroy(); $6.destroy();
+    $$ = $1;
+  }
+  | FCMP FPredicates Types ValueRef ',' ValueRef ')' {
     *$1 += " " + *$2 + " " + *$4.val + "," + *$6.val + ")";
     delete $2; $4.destroy(); $6.destroy();
     $$ = $1;






More information about the llvm-commits mailing list