OSDN Git Service

* error.c (dump_decl): Fix type of default arguments for template
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 3 Feb 1998 22:30:26 +0000 (22:30 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 3 Feb 1998 22:30:26 +0000 (22:30 +0000)
template parameters and nontype template parameters.
* parse.y (template_parm): Handle invalid default template
template arguments here.
* parse.y (template_parm): Use template_arg instead of PTYPENAME
for default template template argument.
* pt.c (coerce_template_parms): Merge default template argument
codes.  Can treat RECORD_TYPE as template name if it is implicitly
created.  Fix argument index in error message.
* typeck.c (comptypes): Merge template argument comparison codes in
TEMPLATE_TEMPLATE_PARM and RECORD_TYPE.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@17650 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/error.c
gcc/cp/parse.c
gcc/cp/parse.y
gcc/cp/pt.c
gcc/cp/typeck.c

index 6b2147b..2fe13c9 100644 (file)
@@ -1,3 +1,18 @@
+Tue Feb  3 22:04:01 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
+
+       * error.c (dump_decl): Fix type of default arguments for template
+       template parameters and nontype template parameters.
+       * parse.y (template_parm): Handle invalid default template 
+       template arguments here.
+
+       * parse.y (template_parm): Use template_arg instead of PTYPENAME 
+       for default template template argument.
+       * pt.c (coerce_template_parms): Merge default template argument 
+       codes.  Can treat RECORD_TYPE as template name if it is implicitly
+       created.  Fix argument index in error message.
+       * typeck.c (comptypes): Merge template argument comparison codes in 
+       TEMPLATE_TEMPLATE_PARM and RECORD_TYPE.
+
 Tue Jan  6 01:42:44 1998  Mumit Khan <khan@xraylith.wisc.edu>
 
        * lex.c (file_name_nondirectory): Also check for '/'.
index a8be758..22d0f11 100644 (file)
@@ -789,10 +789,11 @@ dump_decl (t, v)
                if (defval)
                  {
                    OB_PUTS (" = ");
-                   if (TREE_CODE (arg) == TYPE_DECL)
+                   if (TREE_CODE (arg) == TYPE_DECL
+                       || TREE_CODE (arg) == TEMPLATE_DECL)
                      dump_type (defval, 1);
                    else
-                     dump_decl (defval, 1);
+                     dump_expr (defval, 1);
                  }
                
                OB_PUTC2 (',', ' ');
index 17f1aa0..2085e1b 100644 (file)
@@ -349,7 +349,7 @@ static const short yyrhs[] = {    -1,
     76,     0,   136,     0,   132,    60,   136,     0,   157,     0,
      0,   259,   133,     0,    46,   133,     0,   130,   259,   133,
      0,   134,     0,   134,    65,   216,     0,   382,     0,   382,
-    65,   196,     0,   135,     0,   135,    65,    57,     0,   130,
+    65,   196,     0,   135,     0,   135,    65,   176,     0,   130,
    124,     0,   130,     1,     0,   227,    61,     0,   220,   226,
     61,     0,   217,   225,    61,     0,   220,    61,     0,   160,
     61,     0,   217,    61,     0,     1,    61,     0,     1,   111,
@@ -619,86 +619,86 @@ static const short yyrline[] = { 0,
    388,   391,   393,   395,   397,   399,   401,   403,   409,   413,
    416,   418,   422,   424,   425,   427,   431,   434,   440,   443,
    445,   450,   453,   457,   460,   463,   475,   479,   497,   507,
-   509,   511,   513,   515,   530,   539,   549,   552,   554,   558,
-   560,   561,   568,   569,   570,   573,   576,   580,   582,   583,
-   586,   588,   591,   594,   596,   600,   610,   612,   622,   631,
-   633,   643,   652,   654,   664,   673,   675,   687,   695,   702,
-   707,   714,   721,   724,   726,   728,   734,   744,   746,   749,
-   752,   754,   757,   759,   763,   772,   775,   777,   781,   794,
-   814,   817,   819,   820,   823,   830,   836,   838,   840,   842,
-   844,   847,   852,   854,   855,   856,   857,   860,   862,   863,
-   866,   868,   869,   872,   877,   877,   881,   881,   884,   884,
-   887,   887,   891,   891,   896,   896,   899,   899,   902,   904,
-   907,   914,   921,   927,   930,   939,   941,   949,   952,   955,
-   958,   962,   965,   968,   971,   974,   977,   979,   981,   983,
-   987,   990,   993,   998,  1002,  1007,  1011,  1014,  1016,  1020,
-  1040,  1047,  1050,  1052,  1053,  1054,  1057,  1068,  1077,  1081,
-  1085,  1088,  1090,  1094,  1097,  1100,  1104,  1107,  1109,  1111,
-  1113,  1120,  1133,  1135,  1137,  1139,  1145,  1148,  1151,  1154,
-  1157,  1161,  1164,  1167,  1171,  1173,  1177,  1181,  1183,  1187,
-  1190,  1197,  1200,  1202,  1210,  1219,  1225,  1232,  1234,  1236,
-  1249,  1252,  1254,  1256,  1258,  1260,  1262,  1264,  1266,  1268,
-  1270,  1272,  1274,  1276,  1278,  1280,  1282,  1284,  1286,  1288,
-  1290,  1292,  1296,  1298,  1300,  1317,  1320,  1321,  1322,  1323,
-  1324,  1327,  1330,  1333,  1337,  1340,  1342,  1347,  1349,  1350,
-  1353,  1355,  1357,  1359,  1363,  1366,  1370,  1372,  1373,  1374,
-  1378,  1402,  1403,  1404,  1412,  1420,  1428,  1430,  1442,  1472,
-  1479,  1486,  1488,  1497,  1502,  1525,  1569,  1570,  1574,  1578,
-  1582,  1586,  1588,  1592,  1594,  1602,  1604,  1609,  1615,  1619,
-  1624,  1629,  1631,  1636,  1651,  1666,  1677,  1689,  1697,  1706,
-  1750,  1753,  1757,  1760,  1764,  1767,  1772,  1774,  1778,  1791,
-  1794,  1801,  1808,  1813,  1815,  1820,  1822,  1829,  1831,  1835,
-  1839,  1845,  1849,  1852,  1855,  1858,  1868,  1870,  1873,  1877,
-  1880,  1883,  1886,  1889,  1895,  1901,  1903,  1908,  1910,  1919,
-  1922,  1924,  1927,  1933,  1935,  1945,  1949,  1952,  1955,  1960,
-  1963,  1971,  1973,  1975,  1977,  1980,  1983,  1998,  2017,  2020,
-  2022,  2025,  2027,  2030,  2032,  2035,  2037,  2040,  2043,  2047,
-  2066,  2068,  2088,  2094,  2095,  2101,  2110,  2112,  2122,  2131,
-  2133,  2145,  2148,  2152,  2155,  2159,  2164,  2167,  2171,  2174,
-  2176,  2178,  2180,  2187,  2189,  2190,  2191,  2195,  2198,  2202,
-  2205,  2211,  2213,  2216,  2219,  2222,  2228,  2231,  2234,  2236,
-  2238,  2240,  2244,  2250,  2258,  2260,  2264,  2266,  2271,  2274,
-  2277,  2279,  2281,  2285,  2289,  2294,  2298,  2301,  2306,  2310,
-  2313,  2316,  2320,  2355,  2361,  2370,  2390,  2392,  2395,  2397,
-  2402,  2404,  2406,  2408,  2410,  2414,  2419,  2424,  2430,  2435,
-  2440,  2442,  2446,  2451,  2454,  2461,  2489,  2495,  2497,  2500,
-  2503,  2505,  2509,  2511,  2515,  2541,  2570,  2573,  2574,  2595,
-  2618,  2620,  2624,  2650,  2659,  2748,  2755,  2758,  2766,  2777,
-  2786,  2790,  2805,  2808,  2813,  2815,  2817,  2819,  2821,  2823,
-  2828,  2834,  2836,  2839,  2842,  2844,  2855,  2860,  2863,  2865,
-  2870,  2873,  2874,  2885,  2888,  2889,  2900,  2902,  2905,  2907,
-  2910,  2917,  2925,  2932,  2938,  2944,  2952,  2956,  2961,  2965,
-  2968,  2977,  2979,  2983,  2986,  2991,  2995,  3000,  3010,  3013,
-  3017,  3021,  3029,  3034,  3040,  3043,  3045,  3047,  3053,  3056,
-  3058,  3060,  3062,  3066,  3069,  3090,  3100,  3102,  3103,  3107,
-  3112,  3115,  3117,  3119,  3121,  3125,  3131,  3134,  3136,  3138,
-  3140,  3144,  3147,  3150,  3152,  3154,  3156,  3160,  3163,  3166,
-  3168,  3170,  3172,  3179,  3190,  3194,  3199,  3203,  3208,  3210,
-  3214,  3217,  3219,  3223,  3225,  3226,  3229,  3231,  3237,  3252,
-  3258,  3264,  3278,  3280,  3284,  3300,  3306,  3321,  3332,  3338,
-  3340,  3341,  3342,  3350,  3359,  3360,  3364,  3367,  3373,  3379,
-  3382,  3384,  3386,  3388,  3392,  3396,  3400,  3403,  3408,  3411,
-  3413,  3415,  3417,  3419,  3421,  3423,  3425,  3429,  3433,  3437,
-  3441,  3442,  3444,  3446,  3448,  3450,  3452,  3454,  3456,  3458,
-  3466,  3468,  3469,  3470,  3473,  3481,  3486,  3493,  3495,  3500,
-  3502,  3505,  3519,  3522,  3525,  3534,  3546,  3557,  3577,  3587,
-  3590,  3598,  3610,  3613,  3616,  3619,  3635,  3638,  3649,  3650,
-  3654,  3669,  3688,  3700,  3714,  3728,  3741,  3760,  3778,  3797,
-  3805,  3826,  3844,  3857,  3858,  3861,  3861,  3864,  3864,  3867,
-  3867,  3873,  3879,  3882,  3887,  3894,  3903,  3912,  3921,  3929,
-  3942,  3944,  3948,  3950,  3953,  3960,  3963,  3971,  3987,  3998,
-  4010,  4012,  4015,  4025,  4035,  4046,  4048,  4050,  4053,  4070,
-  4076,  4084,  4086,  4088,  4092,  4095,  4096,  4104,  4108,  4112,
-  4115,  4116,  4122,  4125,  4128,  4130,  4134,  4139,  4142,  4152,
-  4157,  4158,  4166,  4172,  4177,  4181,  4186,  4190,  4194,  4198,
-  4203,  4214,  4228,  4232,  4235,  4237,  4241,  4245,  4248,  4251,
-  4253,  4257,  4259,  4266,  4273,  4276,  4279,  4283,  4287,  4293,
-  4297,  4302,  4304,  4307,  4312,  4318,  4329,  4332,  4334,  4338,
-  4343,  4345,  4352,  4355,  4357,  4359,  4365,  4370,  4373,  4375,
-  4377,  4379,  4381,  4383,  4385,  4387,  4389,  4391,  4393,  4395,
-  4397,  4399,  4401,  4403,  4405,  4407,  4409,  4411,  4413,  4415,
-  4417,  4419,  4421,  4423,  4425,  4427,  4429,  4431,  4433,  4435,
-  4438,  4440
+   509,   511,   513,   515,   528,   537,   547,   550,   552,   556,
+   558,   559,   566,   567,   568,   571,   574,   578,   580,   581,
+   584,   586,   589,   592,   594,   598,   608,   610,   620,   629,
+   631,   641,   650,   652,   662,   671,   673,   685,   693,   700,
+   705,   712,   719,   722,   724,   726,   732,   742,   744,   747,
+   750,   752,   755,   757,   761,   770,   773,   775,   779,   792,
+   812,   815,   817,   818,   821,   828,   834,   836,   838,   840,
+   842,   845,   850,   852,   853,   854,   855,   858,   860,   861,
+   864,   866,   867,   870,   875,   875,   879,   879,   882,   882,
+   885,   885,   889,   889,   894,   894,   897,   897,   900,   902,
+   905,   912,   919,   925,   928,   937,   939,   947,   950,   953,
+   956,   960,   963,   966,   969,   972,   975,   977,   979,   981,
+   985,   988,   991,   996,  1000,  1005,  1009,  1012,  1014,  1018,
+  1038,  1045,  1048,  1050,  1051,  1052,  1055,  1066,  1075,  1079,
+  1083,  1086,  1088,  1092,  1095,  1098,  1102,  1105,  1107,  1109,
+  1111,  1118,  1131,  1133,  1135,  1137,  1143,  1146,  1149,  1152,
+  1155,  1159,  1162,  1165,  1169,  1171,  1175,  1179,  1181,  1185,
+  1188,  1195,  1198,  1200,  1208,  1217,  1223,  1230,  1232,  1234,
+  1247,  1250,  1252,  1254,  1256,  1258,  1260,  1262,  1264,  1266,
+  1268,  1270,  1272,  1274,  1276,  1278,  1280,  1282,  1284,  1286,
+  1288,  1290,  1294,  1296,  1298,  1315,  1318,  1319,  1320,  1321,
+  1322,  1325,  1328,  1331,  1335,  1338,  1340,  1345,  1347,  1348,
+  1351,  1353,  1355,  1357,  1361,  1364,  1368,  1370,  1371,  1372,
+  1376,  1400,  1401,  1402,  1410,  1418,  1426,  1428,  1440,  1470,
+  1477,  1484,  1486,  1495,  1500,  1523,  1567,  1568,  1572,  1576,
+  1580,  1584,  1586,  1590,  1592,  1600,  1602,  1607,  1613,  1617,
+  1622,  1627,  1629,  1634,  1649,  1664,  1675,  1687,  1695,  1704,
+  1748,  1751,  1755,  1758,  1762,  1765,  1770,  1772,  1776,  1789,
+  1792,  1799,  1806,  1811,  1813,  1818,  1820,  1827,  1829,  1833,
+  1837,  1843,  1847,  1850,  1853,  1856,  1866,  1868,  1871,  1875,
+  1878,  1881,  1884,  1887,  1893,  1899,  1901,  1906,  1908,  1917,
+  1920,  1922,  1925,  1931,  1933,  1943,  1947,  1950,  1953,  1958,
+  1961,  1969,  1971,  1973,  1975,  1978,  1981,  1996,  2015,  2018,
+  2020,  2023,  2025,  2028,  2030,  2033,  2035,  2038,  2041,  2045,
+  2064,  2066,  2086,  2092,  2093,  2099,  2108,  2110,  2120,  2129,
+  2131,  2143,  2146,  2150,  2153,  2157,  2162,  2165,  2169,  2172,
+  2174,  2176,  2178,  2185,  2187,  2188,  2189,  2193,  2196,  2200,
+  2203,  2209,  2211,  2214,  2217,  2220,  2226,  2229,  2232,  2234,
+  2236,  2238,  2242,  2248,  2256,  2258,  2262,  2264,  2269,  2272,
+  2275,  2277,  2279,  2283,  2287,  2292,  2296,  2299,  2304,  2308,
+  2311,  2314,  2318,  2353,  2359,  2368,  2388,  2390,  2393,  2395,
+  2400,  2402,  2404,  2406,  2408,  2412,  2417,  2422,  2428,  2433,
+  2438,  2440,  2444,  2449,  2452,  2459,  2487,  2493,  2495,  2498,
+  2501,  2503,  2507,  2509,  2513,  2539,  2568,  2571,  2572,  2593,
+  2616,  2618,  2622,  2648,  2657,  2746,  2753,  2756,  2764,  2775,
+  2784,  2788,  2803,  2806,  2811,  2813,  2815,  2817,  2819,  2821,
+  2826,  2832,  2834,  2837,  2840,  2842,  2853,  2858,  2861,  2863,
+  2868,  2871,  2872,  2883,  2886,  2887,  2898,  2900,  2903,  2905,
+  2908,  2915,  2923,  2930,  2936,  2942,  2950,  2954,  2959,  2963,
+  2966,  2975,  2977,  2981,  2984,  2989,  2993,  2998,  3008,  3011,
+  3015,  3019,  3027,  3032,  3038,  3041,  3043,  3045,  3051,  3054,
+  3056,  3058,  3060,  3064,  3067,  3085,  3095,  3097,  3098,  3102,
+  3107,  3110,  3112,  3114,  3116,  3120,  3126,  3129,  3131,  3133,
+  3135,  3139,  3142,  3145,  3147,  3149,  3151,  3155,  3158,  3161,
+  3163,  3165,  3167,  3174,  3185,  3189,  3194,  3198,  3203,  3205,
+  3209,  3212,  3214,  3218,  3220,  3221,  3224,  3226,  3232,  3247,
+  3253,  3259,  3273,  3275,  3279,  3295,  3301,  3316,  3327,  3333,
+  3335,  3336,  3337,  3345,  3354,  3355,  3359,  3362,  3368,  3374,
+  3377,  3379,  3381,  3383,  3387,  3391,  3395,  3398,  3403,  3406,
+  3408,  3410,  3412,  3414,  3416,  3418,  3420,  3424,  3428,  3432,
+  3436,  3437,  3439,  3441,  3443,  3445,  3447,  3449,  3451,  3453,
+  3461,  3463,  3464,  3465,  3468,  3476,  3481,  3488,  3490,  3495,
+  3497,  3500,  3514,  3517,  3520,  3529,  3541,  3552,  3572,  3582,
+  3585,  3593,  3605,  3608,  3611,  3614,  3630,  3633,  3644,  3645,
+  3649,  3664,  3683,  3695,  3709,  3723,  3736,  3755,  3773,  3792,
+  3800,  3821,  3839,  3852,  3853,  3856,  3856,  3859,  3859,  3862,
+  3862,  3868,  3874,  3877,  3882,  3889,  3898,  3907,  3916,  3924,
+  3937,  3939,  3943,  3945,  3948,  3955,  3958,  3966,  3982,  3993,
+  4005,  4007,  4010,  4020,  4030,  4041,  4043,  4045,  4048,  4065,
+  4071,  4079,  4081,  4083,  4087,  4090,  4091,  4099,  4103,  4107,
+  4110,  4111,  4117,  4120,  4123,  4125,  4129,  4134,  4137,  4147,
+  4152,  4153,  4161,  4167,  4172,  4176,  4181,  4185,  4189,  4193,
+  4198,  4209,  4223,  4227,  4230,  4232,  4236,  4240,  4243,  4246,
+  4248,  4252,  4254,  4261,  4268,  4271,  4274,  4278,  4282,  4288,
+  4292,  4297,  4299,  4302,  4307,  4313,  4324,  4327,  4329,  4333,
+  4338,  4340,  4347,  4350,  4352,  4354,  4360,  4365,  4368,  4370,
+  4372,  4374,  4376,  4378,  4380,  4382,  4384,  4386,  4388,  4390,
+  4392,  4394,  4396,  4398,  4400,  4402,  4404,  4406,  4408,  4410,
+  4412,  4414,  4416,  4418,  4420,  4422,  4424,  4426,  4428,  4430,
+  4433,  4435
 };
 #endif
 
@@ -1038,7 +1038,7 @@ static const short yydefact[] = {     3,
      0,   797,   341,   797,   647,   549,   760,   553,   646,   642,
      0,     0,   549,     0,     0,     0,     0,     0,   409,     0,
      0,    25,     0,    26,    47,    44,    45,     0,    40,     0,
-     0,   646,   642,     0,   784,   549,   787,   789,     0,   785,
+   162,   646,   642,     0,   784,   549,   787,   789,     0,   785,
    786,    46,   466,     0,   141,   151,   151,   139,    18,    20,
    128,   116,   129,   130,     0,   109,   112,     0,     0,     0,
      0,   674,   666,   423,     0,   107,   558,   555,   766,   783,
@@ -1138,194 +1138,194 @@ static const short yydefgoto[] = {  1552,
    689,  1122,  1123,   488,    83,    84
 };
 
-static const short yypact[] = {   101,
-   116,-32768,-32768, 10331,-32768,    78,    44,   121,   289,    82,
-   145,-32768,-32768,   848,-32768,-32768,   103,   168,   182,-32768,
--32768,-32768,   691,   559,   966,   209,-32768,   216,   479,-32768,
-  2358,  2358,-32768,  2401,-32768, 10331,   215,-32768,   292,    14,
- 10390,-32768,-32768,   236,-32768,   331,   319,   328,-32768,-32768,
--32768,-32768,   345,  2831,-32768,  3110,-32768,  1750,   408,-32768,
-   388,-32768,-32768,  1130,-32768,-32768,   378,-32768,-32768,   406,
+static const short yypact[] = {    99,
+   114,-32768,-32768, 10331,-32768,   134,    64,   308,   309,    82,
+   213,-32768,-32768,   848,-32768,-32768,   -10,    89,   126,-32768,
+-32768,-32768,   691,   559,   966,   194,-32768,   216,   350,-32768,
+  2358,  2358,-32768,  2401,-32768, 10331,   201,-32768,   237,    16,
+ 10390,-32768,-32768,   214,-32768,   284,   266,   403,-32768,-32768,
+-32768,-32768,   306,  2831,-32768,  3110,-32768,  1750,   285,-32768,
+   335,-32768,-32768,  1130,-32768,-32768,   402,-32768,-32768,   413,
   4170,-32768,-32768,-32768,   804,-32768,-32768,-32768,   792,-32768,
--32768,   327,  7871,   360,-32768,-32768,   699,-32768,   699,-32768,
-   699,-32768,-32768,-32768,   121,   289,   216,   428,   424,   497,
-   328,-32768,   327,-32768,   327,  9299,  9299,   484,-32768,-32768,
--32768,-32768,-32768,    15,   528,   605,   629,   713,   544,   558,
--32768,-32768,   695,-32768,   855,   121,   289,   620,   216,   428,
--32768,  2602,  1004,   555, 10494,   699,-32768,-32768,  2859,-32768,
-  1470,   414,  2859,-32768,  1270,  3454,  3454,  2401,   557,   561,
-   591,   583,   587,-32768,-32768,   692,-32768,   601,-32768,  4252,
-    78,-32768,-32768,-32768,   716,    84,   295,   682,-32768,-32768,
-   674,    61,-32768,-32768,  3511,  3511,  5038,   804,   490,-32768,
--32768,   356,-32768,-32768,  2290,-32768,-32768,-32768,-32768,-32768,
-  1750,   655,-32768,   388,   804,-32768,-32768,-32768,  2002,  1750,
--32768,   388,-32768,  5148,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   328,  1368,  1368,   378,
--32768,-32768,-32768,-32768,-32768,   886,   327,   662,   388,   521,
-  1578,-32768,   232,-32768,-32768,-32768,-32768,-32768,  3621,-32768,
--32768,   398,-32768,   717,   725,-32768,-32768,-32768,-32768,   731,
+-32768,   411,  7871,   408,-32768,-32768,   572,-32768,   572,-32768,
+   572,-32768,-32768,-32768,   308,   309,   216,   406,   449,   519,
+   403,-32768,   411,-32768,   411,  9299,  9299,   552,-32768,-32768,
+-32768,-32768,-32768,   491,   597,   367,   479,   558,   601,   612,
+-32768,-32768,   695,-32768,   855,   308,   309,   620,   216,   406,
+-32768,  2602,  1004,   600, 10494,   572,-32768,-32768,  2859,-32768,
+  1470,   710,  2859,-32768,  1270,  3454,  3454,  2401,   583,   587,
+   585,   602,   606,-32768,-32768,   708,-32768,   611,-32768,  4252,
+   134,-32768,-32768,-32768,   731,    84,   186,   676,-32768,-32768,
+   647,   121,-32768,-32768,  3511,  3511,  5038,   804,   643,-32768,
+-32768,   345,-32768,-32768,  2290,-32768,-32768,-32768,-32768,-32768,
+  1750,   723,-32768,   335,   804,-32768,-32768,-32768,  2002,  1750,
+-32768,   335,-32768,  5148,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,   403,  1368,  1368,   402,
+-32768,-32768,-32768,-32768,-32768,   886,   411,   662,   335,   521,
+  1578,-32768,   219,-32768,-32768,-32768,-32768,-32768,  3621,-32768,
+-32768,   398,-32768,   699,   725,-32768,-32768,-32768,-32768,   716,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   730,-32768,-32768,   886,  4170,  1222,-32768,   737,
-   769,-32768,  9299,   737,   737,   699, 10494,-32768,  1270,   744,
--32768,-32768,-32768,   754,-32768,-32768,  9914, 10001, 10088, 10088,
--32768,-32768,-32768,-32768,-32768,   772,   793,   797,   799,   801,
-   428,  9386,  1270, 10088,-32768,-32768, 10088,-32768,-32768, 10088,
-  7343,-32768, 10088, 10088,   768,   829,-32768,  9473,-32768, 10649,
+-32768,-32768,   730,-32768,-32768,   886,  4170,  1222,-32768,   608,
+   769,-32768,  9299,   608,   608,   572, 10494,-32768,  1270,   737,
+-32768,-32768,-32768,   761,-32768,-32768,  9914, 10001, 10088, 10088,
+-32768,-32768,-32768,-32768,-32768,   772,   793,   797,   803,   805,
+   406,  9386,  1270, 10088,-32768,-32768, 10088,-32768,-32768, 10088,
+  7343,-32768, 10088, 10088,   779,   831,-32768,  9473,-32768, 10649,
 -32768,   453,  1785,  9560,-32768,   887,  2644,   794,  2796,  1926,
-  5618,-32768,   364,-32768,  2939,  1518,   798,   806,  1734,   601,
--32768,   620,-32768,-32768,-32768,-32768,-32768,-32768,   528,   605,
-   629,   713,   544,-32768,-32768,-32768,   121,   289,   865,-32768,
+  5618,-32768,   302,-32768,  2939,  1518,   798,   799,  1734,   611,
+-32768,   620,-32768,-32768,-32768,-32768,-32768,-32768,   597,   367,
+   479,   558,   601,-32768,-32768,-32768,   308,   309,   865,-32768,
 -32768,-32768,  1004,-32768,-32768,-32768,-32768,-32768,  5209,-32768,
--32768,  5148,  5386,  1941,-32768,   737,   912,-32768,   442,-32768,
--32768,-32768,  2859,-32768,-32768,  2859,-32768,   820,-32768,-32768,
-  3621,    57,   823,   828,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,    77,-32768,-32768,-32768,-32768,  7435,  9386,-32768,-32768,
--32768,  9386,   796,-32768,  6763,   104,  3685,-32768,  3685,-32768,
-  3904,  3904,  5038,   831,-32768,   388,  5148,-32768,   834,-32768,
--32768,  4096,  2002,  1750,  5148,-32768,   388,-32768,-32768,   388,
-  2002,-32768,   733,-32768,-32768,   328,-32768,  1368,-32768,  2037,
-  3361,    37,   886,   692,   852,   388,-32768,-32768,   869,   880,
-   893,-32768,-32768,-32768,-32768,   670,-32768,   376,   862,   866,
--32768,-32768,   886,-32768,-32768,   500,-32768,-32768,   699,-32768,
--32768,-32768,-32768,-32768, 10545,-32768,-32768,-32768,   737,-32768,
-  5148,  2125,-32768,   896,   918,-32768,-32768,  1270,  9386,   754,
-  7343,-32768,   386,  7343,-32768,-32768,-32768,  9299,  5129,  5129,
-  5129,  5129, 10717,-32768,-32768,-32768,-32768,   870, 10175, 10175,
-  7343,   877,   557,   879,   932,   883,-32768,-32768,-32768,  7964,
+-32768,  5148,  5386,  1941,-32768,   608,   683,-32768,   442,-32768,
+-32768,-32768,  2859,-32768,-32768,  2859,-32768,   806,-32768,-32768,
+  3621,    57,   819,   823,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,    79,-32768,-32768,-32768,-32768,  7435,  9386,-32768,-32768,
+-32768,  9386,   826,-32768,  6763,   127,  3685,-32768,  3685,-32768,
+  3904,  3904,  5038,   837,-32768,   335,  5148,-32768,   828,-32768,
+-32768,  4096,  2002,  1750,  5148,-32768,   335,-32768,-32768,   335,
+  2002,-32768,   603,-32768,-32768,   403,-32768,  1368,-32768,  2037,
+  3361,    35,   886,   708,   852,   335,-32768,-32768,   876,   878,
+   880,-32768,-32768,-32768,-32768,   670,-32768,   312,   866,   867,
+-32768,-32768,   886,-32768,-32768,   500,-32768,-32768,   572,-32768,
+-32768,-32768,-32768,-32768, 10545,-32768,-32768,-32768,   608,-32768,
+  5148,  2125,-32768,   896,   905,-32768,-32768,  1270,  9386,   761,
+  7343,-32768,   324,  7343,-32768,-32768,-32768,  9299,  5129,  5129,
+  5129,  5129, 10717,-32768,-32768,-32768,-32768,   858, 10175, 10175,
+  7343,   868,   583,   883,   935,   890,-32768,-32768,-32768,  7964,
   7152,  7343,-32768,  8056,  9386,  9386,  7527,  9386,  9386,  9386,
   9386,  9386,  9386,  9386,  9386,  9386,  9386,  9386,  9386,  9386,
   9386,  9386,  9386,  9386,  9386,  9386,-32768,-32768,-32768,-32768,
--32768,  9386,  9386,  9386,  9299,  2243,   302,   766,  8235,-32768,
--32768,-32768,   939,   992,   396,   436,   445,  2995,   414,-32768,
--32768,  1530,  1530,-32768,  1717,   888,   908,   964,-32768,-32768,
-   465,  8742,  1604,-32768,   548,   327,-32768,-32768,  9386,-32768,
--32768,-32768,-32768,   284,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,    31,-32768,   922,   906,   601,   957,-32768,-32768,-32768,
-   650,   209,   982,   346,   963,   965,-32768,-32768,  2187, 10550,
-  2187,  3219,  1130,  4466,-32768,   973,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   919,-32768,   961,-32768,-32768,   236,
-   563,   977,   932,-32768,-32768,-32768,-32768,  6873, 10717,-32768,
-   829,   921, 10649,-32768,-32768,   934,-32768,-32768,   935,   172,
-  4015,   941,-32768,   192,  5055,   987,   991,   476,-32768,-32768,
--32768,  3685,  3685,-32768,  4096,   993,-32768,-32768,   944,   104,
--32768,  2002,-32768,   994,   388,-32768,   605,   629,-32768,   970,
--32768,   558,  1000,-32768,-32768,   287,-32768,-32768,  1392,-32768,
-   707,   368,-32768,  9386,  6270,-32768,  2632,   199,   199,   315,
-   488,  4322,  5814,  4905,-32768,   114,   199,  1010,   388,    71,
--32768,   104,  1333,   699,   699,   699,   104,  1333,-32768,-32768,
--32768,-32768,-32768,-32768,  1045,  1045,  1045,   737,-32768,-32768,
--32768,-32768,-32768,-32768,  9386,  1270,   972,   918,   975,   978,
-  9653,   964,   988,   989,   995,  1016,  2416,  1021,  1025,  1031,
--32768,   998,-32768,-32768,  1002,-32768,-32768, 10717,  1051,   659,
-   665,   191,   128,  9386,  1061,-32768,  1065,  1018,-32768, 10717,
- 10717, 10717,-32768,-32768,  1073, 10735,  8261,  4799,  3709,  5757,
-  3558,  3889,  3136,  3136,  3136,  1159,  1159,   952,   952,   719,
-   719,   719,-32768,-32768,  1033,  1028,  1034,  1038,  1040,  5129,
-   302,-32768,  7435,  9386,-32768,-32768,-32768,  9386,-32768,-32768,
-  1049, 10088,  1048,  1062,  1105,-32768,  9386,-32768,  9386,-32768,
-  9386,  3668,-32768,  3668,-32768,   138,  1053,  1055,-32768,  1056,
-  5129,   104,-32768,   104,  3804,-32768,  1333,  1057,  8934,  8934,
-  6571,  1058,  9473,  1063,  2499,  1518,   570,  1066,  1734,  1071,
+-32768,  9386,  9386,  9386,  9299,  2243,   291,   766,  8235,-32768,
+-32768,-32768,   946,   994,   332,   386,   396,  2995,   710,-32768,
+-32768,  1530,  1530,-32768,  1717,   899,   922,   969,-32768,-32768,
+   356,  8742,  1604,-32768,   548,   411,-32768,-32768,  9386,-32768,
+-32768,-32768,-32768,   496,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,    31,-32768,   924,   908,   611,   961,-32768,-32768,-32768,
+   650,   194,   991,   523,   964,   965,-32768,-32768,  2187, 10550,
+  2187,  3219,  1130,  4466,-32768,   970,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   921,-32768,   972,-32768,-32768,   214,
+   563,   971,   935,-32768,-32768,-32768,-32768,  6873, 10717,-32768,
+   831,   926, 10649,-32768,-32768,   927,-32768,-32768,   928,   172,
+  4015,   930,-32768,   192,  5055,   979,   980,   436,-32768,-32768,
+-32768,  3685,  3685,-32768,  4096,   986,-32768,-32768,   939,   127,
+-32768,  2002,-32768,   992,   335,-32768,   367,   479,-32768,   962,
+-32768,   612,   998,-32768,-32768,   187,-32768,-32768,  1392,-32768,
+   707,  1093,-32768,  9386,  6270,-32768,  2632,   199,   199,   315,
+   445,  4322,  5814,  4905,-32768,   135,   199,   996,   335,    71,
+-32768,   127,  1333,   572,   572,   572,   127,  1333,-32768,-32768,
+-32768,-32768,-32768,-32768,  1045,  1045,  1045,   608,-32768,-32768,
+-32768,-32768,-32768,-32768,  9386,  1270,   949,   905,   954,   963,
+  9653,   969,   973,   975,   978,  1016,  2416,  1023,  1025,  1029,
+-32768,   997,-32768,-32768,  1002,-32768,-32768, 10717,  1051,   616,
+   665,   191,    46,  9386,  1061,-32768,  1048,  1015,-32768, 10717,
+ 10717, 10717,-32768,-32768,  1065, 10735,  8261,  4799,  3709,  5757,
+  3558,  3889,  3136,  3136,  3136,  1159,  1159,   906,   906,   703,
+   703,   703,-32768,-32768,  1026,  1028,  1032,  1034,  1035,  5129,
+   291,-32768,  7435,  9386,-32768,-32768,-32768,  9386,-32768,-32768,
+  1058, 10088,  1050,  1072,  1117,-32768,  9386,-32768,  9386,-32768,
+  9386,  3668,-32768,  3668,-32768,   138,  1056,  1059,-32768,  1055,
+  5129,   127,-32768,   127,  3804,-32768,  1333,  1057,  8934,  8934,
+  6571,  1063,  9473,  1066,  2499,  1518,   570,  1071,  1734,  1074,
   9740,-32768,  1075,-32768,-32768,-32768,  2262,  5209,-32768,  5129,
-  1109,  1797,  1797,  4709,-32768,-32768,-32768,-32768,  2290,-32768,
--32768,-32768,   815,  9386,-32768,-32768,-32768,-32768,-32768,-32768,
-   528,-32768,   713,   544,  9386,  1124,-32768,   525,   553,   582,
-   932,-32768,-32768,-32768,    24,-32768,-32768,-32768,-32768,-32768,
+-32768,  1797,  1797,  4709,-32768,-32768,-32768,-32768,  2290,-32768,
+-32768,-32768,   584,  9386,-32768,-32768,-32768,-32768,-32768,-32768,
+   597,-32768,   558,   601,  9386,  1135,-32768,   465,   476,   488,
+   935,-32768,-32768,-32768,    55,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,  8838,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   991,  1125,-32768,-32768,-32768,  5129,-32768,-32768,-32768,
+-32768,   980,  1125,-32768,-32768,-32768,  5129,-32768,-32768,-32768,
 -32768,  1137,-32768,  9299,-32768,-32768,-32768,-32768,  1867,-32768,
-  1333, 10717,-32768,-32768,-32768,   388,   388,-32768,-32768,-32768,
--32768,-32768,  1333,   379,   704,  9386,   733,-32768,  1135,-32768,
--32768,-32768,   610,   783,   792,   414,  1095,   199,  1143,-32768,
-  1171,-32768,-32768,-32768,   388,  5463,-32768,-32768,  7435,-32768,
-  1094,   737,   737,   737,-32768,  1096,   104,  1333,   104,  1333,
+  1333, 10717,-32768,-32768,-32768,   335,   335,-32768,-32768,-32768,
+-32768,-32768,  1333,   357,   770,  9386,   603,-32768,  1143,-32768,
+-32768,-32768,   610,   783,   792,   710,  1095,   199,  1144,-32768,
+  1171,-32768,-32768,-32768,   335,  5463,-32768,-32768,  7435,-32768,
+  1096,   608,   608,   608,-32768,  1099,   127,  1333,   127,  1333,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 10717,-32768,
--32768,  1098,-32768,-32768,-32768,-32768,-32768,  1111,  1120,  1121,
-  1126,   919,-32768, 10581,  7435,  6968,  1107,-32768,  9386,-32768,
--32768,-32768,-32768,   367,  1112,-32768,-32768,  1114,   217,   372,
-   372,  1106,   372,-32768,-32768, 10088,  1221,-32768,  1122,  1123,
-  1138,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   104,
-  1139,-32768,  1118,-32768,-32768,  2999,-32768,-32768,-32768,   133,
+-32768,  1094,-32768,-32768,-32768,-32768,-32768,  1120,  1121,  1124,
+  1126,   921,-32768, 10581,  7435,  6968,  1108,-32768,  9386,-32768,
+-32768,-32768,-32768,   376,  1112,-32768,-32768,  1114,   190,   372,
+   372,  1116,   372,-32768,-32768, 10088,  1223,-32768,  1122,  1123,
+  1138,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   127,
+  1139,-32768,  1132,-32768,-32768,  2999,-32768,-32768,-32768,   137,
   1140,-32768,-32768,-32768,-32768,-32768,  1899,  1899,  2060,  2060,
   4709,-32768,  2290,-32768,  2139, 10545,-32768,-32768,  1141,-32768,
    563,-32768,  9386,-32768,  9386,-32768,  9386,-32768,    26,  7060,
--32768,  9027,  9027,  6667,   203,  1142,   220,-32768,  7435,  7247,
--32768,-32768,   135,  7435,  7435,-32768,  1149,  1150,  2037,-32768,
--32768,-32768,   104,  1153,  1180,  1180,   104,  1158,  9386,  9386,
-  6034,   388,  4339,   388,   388,   684,   388,  4925,  1180,  5687,
+-32768,  9027,  9027,  6667,    81,  1142,   155,-32768,  7435,  7247,
+-32768,-32768,   193,  7435,  7435,-32768,  1149,  1150,  2037,-32768,
+-32768,-32768,   127,  1153,  1182,  1182,   127,  1158,  9386,  9386,
+  6034,   335,  4339,   335,   335,   684,   335,  4925,  1182,  5687,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1166,-32768,
   1172,-32768,-32768,-32768,  9386,  9386,  9386,  9386,  7435,-32768,
-  9386,  1184,-32768,-32768, 10717,  9386,-32768,   367,-32768,-32768,
--32768,-32768,-32768,-32768,  1156,-32768,  1205,-32768,-32768,-32768,
-   104,-32768,-32768,-32768,  9386,-32768,-32768,  1899,  1899,-32768,
-  2139,-32768,-32768,  1173,  1178,  1181,  1193,  1270,-32768,-32768,
-  6477,  1247,-32768,-32768,  1182,  1610,-32768,-32768,-32768,-32768,
+  9386,  1190,-32768,-32768, 10717,  9386,-32768,   376,-32768,-32768,
+-32768,-32768,-32768,-32768,  1156,-32768,  1233,-32768,-32768,-32768,
+   127,-32768,-32768,-32768,  9386,-32768,-32768,  1899,  1899,-32768,
+  2139,-32768,-32768,  1173,  1178,  1180,  1194,  1270,-32768,-32768,
+  6477,  1258,-32768,-32768,  1184,  1610,-32768,-32768,-32768,-32768,
   5129,-32768,-32768,-32768,  7435,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  6034,  6034,-32768,  1180,   446,   770,
-  9386,-32768,-32768,-32768,   733,   733,  1180,  1180,   670,  1180,
--32768,-32768,  6143,   104,   104,-32768,-32768,  1189,  1194,  1197,
-  1201,-32768, 10672,  7435,  1203,-32768,-32768,-32768,-32768,   104,
-  1204,-32768,-32768,-32768,-32768,  1193,-32768,-32768,   723,-32768,
-   142,  1231,   807,   856,-32768,-32768,-32768,-32768,-32768,  9386,
-  1254,  1259,  1260,  9120,   107,   581,-32768,-32768,  9212,  1313,
-  1262,-32768,  4846, 10449,  4560,  6365,-32768,-32768,  1308,-32768,
--32768,-32768,  8346,-32768,   306,-32768,-32768,   104,   104,-32768,
--32768,-32768,  9386,  9386,  6034,   388,   388,-32768,-32768,-32768,
--32768,  8148,-32768,-32768,-32768,-32768,   104,   104,-32768,-32768,
+-32768,-32768,-32768,-32768,  6034,  6034,-32768,  1182,   360,   807,
+  9386,-32768,-32768,-32768,   603,   603,  1182,  1182,   670,  1182,
+-32768,-32768,  6143,   127,   127,-32768,-32768,  1189,  1197,  1201,
+  1204,-32768, 10672,  7435,  1191,-32768,-32768,-32768,-32768,   127,
+  1206,-32768,-32768,-32768,-32768,  1194,-32768,-32768,   743,-32768,
+   200,  1254,   856,   889,-32768,-32768,-32768,-32768,-32768,  9386,
+  1257,  1260,  1261,  9120,   107,   446,-32768,-32768,  9212,  1314,
+  1263,-32768,  4846, 10449,  4560,  6365,-32768,-32768,  1309,-32768,
+-32768,-32768,  8346,-32768,   220,-32768,-32768,   127,   127,-32768,
+-32768,-32768,  9386,  9386,  6034,   335,   335,-32768,-32768,-32768,
+-32768,  8148,-32768,-32768,-32768,-32768,   127,   127,-32768,-32768,
 -32768,-32768,  7435,-32768,-32768,-32768,-32768,-32768,-32768,  1270,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   932,  1232,
-  1235,  5887,-32768,-32768,-32768,-32768,  1264,  9386,  1269,-32768,
-   932,-32768,-32768,  1237,-32768,-32768,   733,   841,-32768,   904,
-   733,  9827,   913,   185,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,  6034,  6034,-32768,  1180,  1180,  1224, 10603,  1240,
--32768,-32768,-32768,  1242,-32768,   585,   585,-32768,-32768,  1326,
-  5980,  9299,  9386,-32768,  8456,-32768,  1285,-32768,-32768,   692,
--32768,-32768, 10262, 10262,  7619,-32768,-32768,   932,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,   331,   236,  2554,-32768,-32768,
-  9299,-32768,-32768,  8648,-32768,    26,-32768,-32768,  1287,-32768,
-  1239,   201,  5148, 10695,  8456,-32768,-32768,  1193,    52,-32768,
-   143,-32768,  1241,  1243,   932,  1244,   932,  8552,-32768,   643,
--32768,-32768,-32768,-32768,   733,-32768,-32768,  1193,  1339,  1291,
--32768,-32768,    77,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  9386,  1297,  7711,   932,   388,  8456,
-  1266,   157,  1301,-32768,-32768,-32768,-32768,-32768,    26,-32768,
-  1256,-32768,-32768,  1306,-32768,-32768,  1303,-32768,  9386,  1339,
-  1316,  1339,-32768,-32768,-32768,-32768,-32768,-32768,  1273,   193,
--32768,-32768,  7803,-32768,  7435,-32768,  1358,  1319,  1275,-32768,
--32768,   190,-32768,-32768,  1363,  1325,  8552,-32768,-32768,-32768,
--32768,  1393,  1394,-32768
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   935,  1232,
+  1235,  5887,-32768,-32768,-32768,-32768,  1269,  9386,  1272,-32768,
+   935,-32768,-32768,  1237,-32768,-32768,   603,   841,-32768,   912,
+   603,  9827,   914,   215,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,  6034,  6034,-32768,  1182,  1182,  1227, 10603,  1240,
+-32768,-32768,-32768,  1249,-32768,   525,   525,-32768,-32768,  1329,
+  5980,  9299,  9386,-32768,  8456,-32768,  1287,-32768,-32768,   708,
+-32768,-32768, 10262, 10262,  7619,-32768,-32768,   935,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,   284,   214,  2554,-32768,-32768,
+  9299,-32768,-32768,  8648,-32768,    26,-32768,-32768,  1288,-32768,
+  1241,   288,  5148, 10695,  8456,-32768,-32768,  1194,    67,-32768,
+   147,-32768,  1242,  1243,   935,  1244,   935,  8552,-32768,   553,
+-32768,-32768,-32768,-32768,   603,-32768,-32768,  1194,  1339,  1297,
+-32768,-32768,    79,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,  9386,  1299,  7711,   935,   335,  8456,
+  1267,    92,  1306,-32768,-32768,-32768,-32768,-32768,    26,-32768,
+  1259,-32768,-32768,  1307,-32768,-32768,  1302,-32768,  9386,  1339,
+  1313,  1339,-32768,-32768,-32768,-32768,-32768,-32768,  1273,   146,
+-32768,-32768,  7803,-32768,  7435,-32768,  1366,  1319,  1275,-32768,
+-32768,   234,-32768,-32768,  1375,  1332,  8552,-32768,-32768,-32768,
+-32768,  1394,  1398,-32768
 };
 
 static const short yypgoto[] = {-32768,
-  1398,-32768,  -324,-32768,   996,     2,     0,  1397,-32768,   392,
--32768,-32768,   492,  1054,-32768,     9,-32768,-32768,  -586,-32768,
--32768,   531,-32768,  1249,  -655,   -14,  -644,  1267,    25,-32768,
--32768,-32768,-32768,-32768,   700,   708,-32768,-32768,-32768,-32768,
--32768,   335,   176,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  1345,  -619,  5219,    47,  -164,    72,
-  1304,   946,-32768,-32768,-32768,   -36,-32768,    34,-32768, -1369,
--32768, -1382,  -102,-32768,   313,   374,  -251,-32768,  -810,  2843,
-   -42,  4754,  3156,  1168,-32768,  -104,    -3,   171,   -45,   -23,
+  1399,-32768,  -302,-32768,   999,     2,     0,  1401,-32768,   392,
+-32768,-32768,   492,  1067,-32768,     9,-32768,-32768,  -586,-32768,
+-32768,   534,-32768,  1276,  -655,   -27,  -644,  1278,    25,-32768,
+-32768,-32768,-32768,-32768,   694,   706,-32768,-32768,-32768,-32768,
+-32768,   334,   176,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,  1346,  -619,  5219,    47,  -164,    72,
+  1303,  -472,-32768,-32768,-32768,   -36,-32768,    38,-32768, -1378,
+-32768, -1374,  -105,-32768,   313,   374,  -251,-32768,  -805,  2843,
+   -42,  4754,  3156,  1168,-32768,  -104,    -5,   171,   -45,   -23,
 -32768,-32768,-32768,  -321,-32768,  -142,-32768,-32768, -1241,   -49,
   -339,  1165,    51,   885,  -138,    -1,  4157,  -182,    -4,   -92,
-  -657,   148,-32768,   -63,-32768,-32768,  -176,-32768,-32768,-32768,
+  -528,   148,-32768,   -63,-32768,-32768,    17,-32768,-32768,-32768,
 -32768,-32768,   639,    30,    -2,-32768,   574,-32768,-32768, -1031,
   -143,   788,-32768,-32768,-32768,-32768,-32768,   303,-32768,-32768,
 -32768,-32768,-32768,   690,  -362,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,  1245,-32768,   333,   504,-32768,-32768,-32768,-32768,
    470,  -701,   742,-32768,-32768,-32768,-32768,-32768,   739,-32768,
-   334,   976,   726,   909,  1728,    66,    -5,  -409,  1312,  1651,
+   336,   977,   726,   918,  1728,    66,    11,  -409,  1300,  1651,
   -437,-32768,     1,-32768,  2919,  -127,     5,   -11,  3697,  1164,
 -32768,  4316,  1484,   974,   -22,  -117,-32768,  1372,-32768,  3773,
-  2378,  -401,-32768,  1977,-32768,-32768,   197,  -872, -1145,-32768,
--32768,   293,    23,  -356,-32768,-32768,-32768,-32768, -1329,-32768,
+  2378,  -238,-32768,  1977,-32768,-32768,   197,  -872, -1138,-32768,
+-32768,   293,    23,  -356,-32768,-32768,-32768,-32768, -1354,-32768,
  -1237, -1379,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,    49,-32768,-32768,
 -32768,-32768,-32768,    53, -1234,-32768,-32768,-32768,   -56,-32768,
 -32768,-32768,-32768, -1362,    -7,-32768,    -8,-32768,  -653,  -502,
    575,-32768,-32768,-32768,-32768,  -369,-32768,  -357,  -167,-32768,
-   968,   309,-32768,   196,-32768,  -213
+   968,   310,-32768,   119,-32768,  -213
 };
 
 
@@ -1335,158 +1335,158 @@ static const short yypgoto[] = {-32768,
 static const short yytable[] = {    58,
    603,   121,    56,    37,   178,    36,   921,   366,   444,   645,
    151,   229,    41,   402,   102,   910,   643,   471,   394,   397,
-  1046,   646,   717,   963,   612,   625,   278,   374,    45,   699,
+   759,   646,   717,   963,   612,  1046,   278,   374,    45,   699,
    908,    58,   992,   236,    56,    37,    58,    36,   153,    56,
-    37,  1349,    36,   463,    41,   512,   515,   172,  1449,    41,
+    37,  1349,    36,   463,    41,   512,   515,   625,  1449,    41,
   1109,   191,   443,   460,    54,   666,   902,  1372,   206,  1208,
-    45,   451,   581,  1471,  1469,    45,   226,   581,  1387,   325,
-   347,  1466,   158,   351,   738,  1390,   543,   663,   276,   352,
-   190,   581,   240,  1110,   409,   194,    54,   202,  1492,  1001,
-   879,    54,   858,   483,  1006,   236,   139,   143,  1460,   858,
-    -1,   340,   340,  1231,  1232,   291,   449,   452,   424,    94,
-   109,   110,   474,   159,  1479,    -2,   372,  1252,    87,   497,
-   498,   377,   151,   151,   151,   233,  1524,  1515,   375,   376,
-   384,   447,   615,   383,  1111,   664,  1209,  1489,    85,   236,
-   880,  1015,  -329,  1482,  1018,   172,   410,   739,   277,   929,
-   153,   153,   153,   151,   425,    58,    92,   483,    56,   381,
-   284,  1480,   285,   111,   112,   688,   657,  1492,  1516,  1447,
-  1539,   341,   341,   772,   993,    88,   172,  1456,   785,   411,
-   998,   153,   137,   929,    45,   382,   860,  1368,    86,   100,
-  -127,   206,  1195,    93,  1221,    89,   106,   930,   114,   206,
-   931,  -329,  1352,   935,   150,   410,  1322,   386,   197,   198,
-    54,   393,   396,  1071,    14,  1328,  1329,  1477,  1330,  1520,
-   202,   651,   652,   919,   994,    15,    16,   240,   450,   202,
-  -388,   930,   585,  1177,   931,   932,  -793,    21,   411,   215,
-   427,   429,  1196,  1349,  1222,  1352,    24,   786,   591,  1545,
-  -278,   936,  1353,  -126,   937,  1537,   516,   517,   466,  -388,
-   697,   107,  1518,  -388,   591,   136,  1521,  -593,   703,   932,
-   887,   525,   226,   670,   526,   108,   578,   527,   340,   472,
-   537,   538,   502,   134,   532,   383,  1097,  1098,   478,   938,
-   136,   580,   612,   957,   771,  1427,  -278,  -278,   364,  1546,
-  1083,   883,  1538,   394,   397,   702,   922,  1134,   156,  -388,
-   771,   500,  -271,  -593,  -593,   645,   340,   395,   398,  1138,
-   391,   740,   301,  1493,   958,   473,  1180,   942,   276,  -593,
-     8,     9,   648,   586,   760,  1506,   226,   501,    27,   968,
-   372,   603,   416,    90,   163,  1510,   240,   150,   341,   832,
-   449,   452,   157,  -280,  1159,   165,  1161,   499,   449,   417,
-   203,   630,  1523,    91,  1431,  1432,   833,  1266,   858,   629,
-   452,   126,   127,   969,   642,   126,   127,   970,   191,   169,
-   474,  1534,   170,   129,   130,   674,   341,   633,   418,   705,
-   452,   858,  -553,   455,   457,   834,  1162,  1163,   277,  -280,
-  -280,     8,   476,  -553,  1551,   888,   470,   151,   151,   151,
-   971,   608,   194,   202,   832,  -274,  1361,   126,   127,    19,
-   681,   889,    27,   751,   129,   130,    27,   155,   129,   130,
-   858,   833,   162,   591,   279,   153,   153,   153,  -553,   171,
-   221,  1139,   836,   846,   644,   126,   127,   206,   992,  -553,
-   439,   762,   837,    87,   129,   130,    58,   609,  1073,   733,
-   834,  1176,   725,   206,   223,   466,   838,   204,   205,   752,
-   129,   130,   450,   202,   532,  1404,   466,   532,   477,   771,
-   450,   774,   137,   848,  1406,  1407,   525,   526,   524,   847,
-   644,   534,   850,   203,   532,    39,   692,   693,   129,   130,
-   567,   203,   203,   126,   127,   532,   340,   731,  1323,   340,
-   804,   732,   866,   340,   777,   777,   777,   777,   645,   578,
-    87,   717,   477,   946,   621,   643,   340,    39,   203,   849,
-   646,   202,    39,   137,   288,   972,   826,   340,   851,   568,
-   569,   953,   843,   955,   570,   571,   572,   573,   959,   437,
-   438,     8,     9,   138,   612,   290,   129,   130,   867,   868,
-   758,   115,   116,   117,  1108,   911,   707,   708,   467,   947,
-   340,   276,  1102,     8,     9,    90,   341,   349,   203,   341,
-   232,   973,   353,   341,   341,   341,   341,   341,   858,   895,
-   642,   900,   901,  1014,   483,    91,   341,   681,   357,  1497,
-  1104,   366,   395,   398,   129,   130,   240,   341,   121,   449,
-   912,   858,   358,    27,   468,   118,   119,    27,  1103,   913,
-   914,   543,   293,   367,   368,    10,   129,   130,   232,  1106,
-   378,   901,  1440,   706,  -338,   191,    15,    16,   920,   226,
-   341,   277,   203,  1370,  1185,  1378,  1105,  1383,  1181,  1182,
-   477,  1184,   359,   360,   361,   136,   915,   852,   854,   354,
-   644,    22,   615,   919,   966,   967,  -271,   644,  -338,   194,
-   399,   202,  -338,   995,    27,  1107,    28,   311,  1441,    89,
-   642,   534,   978,   355,   534,   171,   203,   126,  1249,  1047,
-  1494,   717,   400,    94,   109,   110,  -588,   359,   360,   361,
-   395,   782,   296,    91,    27,  -338,   362,   363,    33,   772,
-   202,    -7,   534,    88,   445,   446,   795,   749,   408,    90,
-    58,  -124,    58,   733,    90,   733,   725,  -125,   191,    58,
-   671,   450,   733,    89,   466,   725,  1495,   671,   642,    91,
-   129,   130,   420,   642,    91,   203,   203,   111,   112,   113,
-   644,   362,   363,   203,   960,   464,   977,   987,    88,    15,
-    16,    90,   194,   750,   477,   203,  1140,   356,   466,   126,
-   127,   731,   874,   731,  -158,   732,  -158,   732,    89,   731,
-   731,    91,  1350,  1351,   732,   203,   421,   136,  1129,  1130,
-  1131,   672,  1462,   481,     7,     8,   230,    10,   679,  1055,
-   961,  1052,   565,   566,   203,  1483,   886,  -339,   644,    15,
-    16,   479,   490,   644,   491,  1002,  1003,  1004,   903,   480,
+    45,   451,  1466,   172,  1469,    45,   226,   581,  1387,   325,
+   347,  1471,   738,  1460,   158,  1390,   543,   581,   276,   663,
+   190,   581,   240,   106,   409,   194,    54,   202,  1492,  1001,
+   879,    54,   858,   483,  1006,   236,   139,   143,    -1,   858,
+   137,   340,   340,  1231,  1232,   291,   449,   452,  -127,    94,
+   109,   110,  1489,    -2,  1110,   159,   372,  1252,  1515,   497,
+   498,   377,   151,   151,   151,   233,   375,   376,  -278,  1479,
+   384,   447,   615,   383,  1524,   474,  1209,   664,    87,   236,
+   880,  1015,  -329,  1516,  1018,   739,   410,  1482,   277,   929,
+   153,   153,   153,   151,  1520,    58,    92,   483,    56,   381,
+   284,   172,   285,   111,   112,  1111,   657,  1492,   424,  1447,
+  1539,   341,   341,   772,  -278,  -278,  1480,  1456,   785,   411,
+   998,   153,   107,   929,    45,   382,   860,  1368,   688,   100,
+  -271,   206,   172,   957,    85,   993,  1195,   930,   114,   206,
+   931,  1521,  -593,   935,   150,  -329,  1322,   386,  1537,   410,
+    54,   393,   396,  1071,   425,  1328,  1329,  1477,  1330,   108,
+   202,   651,   652,   919,   958,    15,    16,   240,   450,   202,
+  -388,   930,   585,   416,   931,   932,  -793,   591,  1177,   215,
+   427,   429,   411,  1349,    86,   994,  1196,   786,  -593,  -593,
+   417,   936,  1221,  -126,   937,  1538,   516,   517,   466,  -388,
+  1352,    93,  1518,  -388,  -593,   136,   472,  -280,   134,   932,
+   887,   525,   226,   670,   526,  1352,   578,   527,   340,   418,
+   537,   538,   502,   771,   532,   383,  1097,  1098,   478,   938,
+   136,   580,   612,  1545,   156,   197,   198,   157,   364,  1180,
+  1083,    14,  1222,   394,   397,   702,   922,  1134,   165,  -388,
+  1353,   500,   473,  -280,  -280,   645,   340,   395,   398,  1138,
+   391,   740,   163,   883,    21,  1427,   169,   942,   276,  -274,
+  1493,   586,   648,    24,   760,   591,   226,   501,   832,   968,
+   372,   603,  1506,  1546,   204,   205,   240,   150,   341,   608,
+   449,   452,  1510,  -553,  1159,   833,  1161,   499,   449,   751,
+   203,   630,    88,    90,  1431,  1432,    19,   629,   858,  1523,
+   452,   591,  1266,   969,   642,   126,   127,   970,   191,   846,
+   474,   771,    89,    91,   834,   674,   341,   633,  1534,   705,
+   452,   858,  -553,   455,   457,   609,  1162,  1163,   277,  -553,
+   171,     8,   476,   866,   137,   752,   470,   151,   151,   151,
+   971,  1551,   194,   202,     8,     9,  1361,   771,  1086,  1139,
+   681,   354,  1323,   832,   138,   847,    27,   155,   129,   130,
+   858,    87,   162,   848,    87,   153,   153,   153,  -553,   439,
+   833,    89,   836,   850,   644,   126,   127,   206,   992,   867,
+   868,   762,   837,   697,   129,   130,    58,   170,  1073,   733,
+   137,   703,   725,   206,   221,   466,   838,   129,   130,   834,
+  1176,   223,   450,   202,   532,  1404,   466,   532,   477,   849,
+   450,   774,   279,   946,  1406,  1407,   525,   526,   524,   851,
+   644,   534,   972,   203,   532,    39,   692,   693,   129,   130,
+   567,   203,   203,   126,   127,   532,   340,   731,  1370,   340,
+   804,   732,  1102,   340,   777,   777,   777,   777,   645,   578,
+   136,   717,   477,  1104,   621,   643,   340,    39,   203,   947,
+   646,   202,    39,   355,   301,  1106,   826,   340,   973,   568,
+   569,   953,   843,   955,   570,   571,   572,   573,   959,   351,
+    27,     8,     9,    91,   612,   352,   129,   130,  1103,   288,
+   758,   115,   116,   117,  1108,   911,   707,   708,   467,  1105,
+   340,   276,  1440,     8,     9,    90,   341,   290,   203,   341,
+   232,  1107,   888,   341,   341,   341,   341,   341,   858,   895,
+   642,   900,   901,  1014,   483,    91,   341,   681,   889,  1497,
+  1494,   366,   395,   398,   129,   130,   240,   341,   121,   449,
+   912,   858,   356,    27,   468,   118,   119,    27,  1441,   913,
+   914,   543,   293,   367,   368,    10,   129,   130,   232,    15,
+    16,   901,   136,   706,  -338,   191,    15,    16,   920,   226,
+   341,   277,   203,   -44,  1185,   349,  1495,  -158,   -44,  -158,
+   477,   353,   359,   360,   361,   357,   915,   852,   854,   -44,
+   644,    22,   615,   919,   966,   967,   358,   644,  -338,   194,
+    88,   202,  -338,   995,    27,   378,    28,   311,  -124,   171,
+   642,   534,   978,   490,   534,   491,   203,   126,  1249,  1047,
+    89,   717,  -271,    94,   109,   110,   399,   359,   360,   361,
+   395,   782,   437,   438,    27,  -338,   362,   363,    33,   772,
+   202,   400,   534,   126,   127,  -588,   795,   749,   296,    90,
+    58,    -7,    58,   733,    90,   733,   725,  -125,   191,    58,
+   671,   450,   733,   408,   466,   725,   420,   671,   642,    91,
+   129,   130,   493,   642,    91,   203,   203,   111,   112,   113,
+   644,   362,   363,   203,   960,   464,   977,   987,   490,   421,
+   491,    90,   194,   750,   477,   203,   129,   130,   466,   126,
+   127,   731,   874,   731,  1378,   732,  1383,   732,   481,   731,
+   731,    91,   445,   446,   732,   203,   565,   566,  1129,  1130,
+  1131,   672,  1462,   479,     7,     8,   230,    10,   679,  1055,
+   961,  1052,  1350,  1351,   203,  1483,   886,  -339,   644,    15,
+    16,  1181,  1182,   644,  1184,  1002,  1003,  1004,   903,   480,
     27,   671,   129,   130,    88,   777,   525,   526,   493,  1049,
-    15,    16,  1324,    22,   532,  -388,   836,  1154,  1155,  1156,
-   231,  -339,   482,   795,    89,  -339,   837,   509,    28,    29,
-    94,    95,    96,   236,   507,  1152,   777,   115,   116,   117,
-   838,    88,   642,  -388,  -388,   518,   681,   519,  -388,  1355,
-   151,   520,   232,   521,   -44,   522,   240,   539,  -339,   -44,
-    33,    89,   769,   642,   671,   777,   671,   671,   540,   642,
-   -44,  1170,  1173,   197,   198,   341,   633,   581,   153,    14,
-   437,  1421,    27,   590,    97,    98,    99,   616,   675,   151,
-    90,   118,   119,  1142,   671,   617,   741,  1127,  1356,  1144,
-  1145,   671,    21,  1142,  1147,   628,   341,  1145,   681,   655,
-    91,    24,   644,    -6,   852,   854,   644,   153,   658,   236,
-   694,   874,   777,   744,   203,   825,   698,   827,   828,   340,
-  1011,  1012,  1013,   644,   745,   341,   642,  1087,  1088,   644,
-   765,   394,   397,   445,  1422,   772,  1173,   746,   642,   126,
-   127,   493,   437,  1426,   753,  1217,  1219,   766,   754,   781,
-  1223,  1224,   878,   203,   394,   397,   783,   490,   784,   491,
-   664,    58,   786,   844,   733,   466,   466,   725,   644,   845,
-   859,   861,  1409,   642,   203,   642,   293,   367,   368,    10,
-   128,   863,   341,  1186,  1419,   881,   882,   884,    21,   341,
-    27,   909,   129,   130,   466,  1262,   644,   890,  -274,   891,
-   926,   233,   562,   563,   564,   565,   566,   904,   644,   410,
-   395,   782,   731,   927,   928,    22,   732,   236,   126,   127,
-   934,  -792,   238,   474,   621,   944,   949,   948,   951,   956,
-    28,   311,   886,   954,   150,   151,   151,   151,   645,   525,
-   526,  1409,   996,   644,   696,   644,   238,   532,   920,   203,
-  1464,  1317,  1021,   671,  1023,   704,   642,  1024,   151,   151,
-   151,  1028,    33,   153,   153,   153,  1029,  1025,  1026,    27,
-  1030,   129,   130,  1116,  1027,   238,  1031,  1032,  1487,   681,
+    15,    16,  1140,    22,   532,  -388,   836,  1154,  1155,  1156,
+   231,  -339,   482,   795,    89,  -339,   837,   507,    28,    29,
+    94,    95,    96,   236,   509,  1152,   777,   115,   116,   117,
+   838,    88,   642,  -388,  -388,   518,   681,   519,  -388,  1324,
+   151,   520,   232,  1011,  1012,  1013,   240,   521,  -339,   522,
+    33,    89,   769,   642,   671,   777,   671,   671,   539,   642,
+   540,  1170,  1173,   197,   198,   341,   633,   581,   153,    14,
+   437,  1421,    27,   590,    97,    98,    99,   616,   617,   151,
+    88,   118,   119,  1142,   671,   655,   741,  1127,  1355,  1144,
+  1145,   671,    21,  1142,  1147,   628,   341,  1145,   681,    -6,
+    89,    24,   644,   658,   852,   854,   644,   153,   675,   236,
+   698,   874,   777,    90,   203,   825,   694,   827,   828,   340,
+   744,  1356,   745,   644,   746,   341,   642,  1087,  1088,   644,
+   765,   394,   397,    91,   766,   772,  1173,   781,   642,   126,
+   127,   445,  1422,   437,  1426,  1217,  1219,   783,   753,   754,
+  1223,  1224,   878,   203,   394,   397,   562,   563,   564,   565,
+   566,    58,   784,   664,   733,   466,   466,   725,   644,   786,
+   844,   845,  1409,   642,   203,   642,   293,   367,   368,    10,
+   128,   859,   341,  1186,  1419,   861,   863,   881,   882,   341,
+    27,   884,   129,   130,   466,  1262,   644,    21,   890,   891,
+  -274,   233,   909,   410,   904,   926,   927,   928,   644,   934,
+   395,   782,   731,  -792,   944,    22,   732,   236,   126,   127,
+   948,   949,   238,   474,   621,   954,   951,   956,   996,  1021,
+    28,   311,   886,  1023,   150,   151,   151,   151,   645,   525,
+   526,  1409,  1024,   644,   696,   644,   238,   532,   920,   203,
+  1464,  1317,  1025,   671,  1026,   704,   642,  1027,   151,   151,
+   151,  1028,    33,   153,   153,   153,   126,   127,  1029,    27,
+  1030,   129,   130,  1116,  1031,   238,  1032,  1036,  1487,   681,
   1409,  1033,   772,  -123,   238,   484,   153,   153,   153,  -102,
-  1344,    15,    16,  1035,  1036,   485,   666,  1038,  1258,  1259,
-  1260,  1261,    94,    95,    96,  1039,   207,   208,   209,  1265,
-  1041,  1409,  1040,  1054,  1042,    58,   671,  1043,   733,  1044,
-  1057,   725,  1058,  -102,  1198,  1199,   644,  -102,   238,   671,
-  1056,   671,  1064,   671,  1065,  1086,   210,  1074,  1066,  1072,
-   466,   466,  1075,   466,   466,  1077,   466,  1198,  1199,   644,
-  1079,  1326,  1327,  1101,    27,  1082,    97,    98,   211,  1119,
-  -102,   238,   478,   671,  1143,  -100,   731,    15,    16,  1403,
-   732,  1126,  1148,  1153,  1165,  1157,  1305,  1048,  1164,  1304,
-  1300,  1172,  1299,  1166,  1167,   238,   777,  1174,  1183,  1168,
-  1059,  1178,  1060,  1179,  1061,   126,   127,   671,  1187,  -100,
-  1194,  1188,  1189,  -100,   212,   213,   214,   560,   561,   562,
-   563,   564,   565,   566,   417,   671,  1264,  1190,  1193,  1197,
-  1202,  1216,  1268,  1377,  1081,  1377,   537,  1367,  1226,  1227,
+  1344,    15,    16,  1035,  1038,   485,   666,  1039,  1258,  1259,
+  1260,  1261,    94,    95,    96,  1040,   207,   208,   209,  1265,
+  1041,  1409,  1042,  1043,  1044,    58,   671,    27,   733,   129,
+   130,   725,  1054,  -102,  1198,  1199,   644,  -102,   238,   671,
+  1057,   671,  1056,   671,  1058,  1064,   210,  1066,  1065,  1072,
+   466,   466,  1074,   466,   466,  1075,   466,  1198,  1199,   644,
+  1077,  1326,  1327,  1079,    27,  1082,    97,    98,   211,  1119,
+  -102,   238,   478,   671,  1101,  -100,   731,    15,    16,  1403,
+   732,  1126,  1143,  1148,  1164,  1153,  1305,  1048,  1157,  1304,
+  1300,  1172,  1299,  1165,  1166,   238,   777,  1167,  1174,  1168,
+  1059,  1178,  1060,  1179,  1061,   126,   127,   671,  1183,  -100,
+  1187,  1188,  1189,  -100,   212,   213,   214,   560,   561,   562,
+   563,   564,   565,   566,  1194,   671,   417,  1190,  1193,  1197,
+  1202,  1216,  1264,  1377,  1081,  1377,   537,  1367,  1226,  1227,
    395,   398,  1230,   639,   466,   466,  -100,  1234,  1267,   483,
    338,   348,    94,   109,   110,  1256,    27,  1459,   129,   130,
-  1208,  1257,  1272,   395,  1215,  1172,   341,  1273,  1099,  1275,
-  1274,  1315,   484,  1354,  1305,   394,   397,  1304,  1339,   191,
-  1299,  1305,   485,  1340,  1304,  1300,  1341,  1299,  1305,   639,
-  1342,  1304,  1300,  1347,  1299,  1345,  1363,   447,   238,  1364,
-  1365,  1373,  1375,  1388,  1416,  1411,   111,   112,  1412,  1418,
-  1420,  1417,  1433,   194,   202,  1438,     8,     9,  1435,   380,
-    12,    13,  1445,   952,   677,  1457,    14,  1473,  1474,  1501,
-  1485,  1505,  1486,  1488,   466,   466,   466,  1512,   151,  1519,
-  1522,    17,   238,    18,    19,  1525,  1526,  1528,  1541,    21,
-    94,    95,    96,  1548,   804,  1450,  1531,   997,    24,  1543,
-   525,   526,  1536,  1278,  1544,  1549,   153,    27,   532,   129,
-   130,  1540,  1553,  1554,   115,   707,   708,     1,     5,   151,
-   151,   151,   660,  1475,  1450,   627,  1305,  1452,   406,  1304,
-  1305,  1499,  1299,  1304,  1300,   671,  1299,   671,  1084,   671,
-   340,  1461,   466,   466,    97,    98,   407,   153,   153,   153,
-   678,   238,   988,   642,   964,  1203,  1452,   287,   759,  1305,
-  1443,   387,  1304,  1300,  1550,  1299,   489,   496,   118,   119,
+  1268,  1257,  1272,   395,  1215,  1172,   341,  1273,  1099,  1274,
+  1275,  1208,   484,  1315,  1305,   394,   397,  1304,  1339,   191,
+  1299,  1305,   485,  1345,  1304,  1300,  1340,  1299,  1305,   639,
+  1341,  1304,  1300,  1342,  1299,  1347,  1354,   447,   238,  1363,
+  1364,  1365,  1373,  1375,  1388,  1411,   111,   112,  1412,  1416,
+  1420,  1417,  1418,   194,   202,  1433,     8,     9,  1435,   380,
+    12,    13,  1438,   952,   677,  1445,    14,  1457,  1473,  1501,
+  1474,  1485,  1486,  1488,   466,   466,   466,  1505,   151,  1512,
+  1519,    17,   238,    18,    19,  1522,  1528,  1526,  1525,    21,
+    94,    95,    96,  1531,   804,  1450,  1541,   997,    24,  1543,
+   525,   526,  1536,  1278,  1544,  1548,   153,    27,   532,   129,
+   130,  1540,  1549,  1553,   115,   707,   708,  1554,     1,   151,
+   151,   151,     5,  1475,  1450,   660,  1305,  1452,  1461,  1304,
+  1305,  1499,  1299,  1304,  1300,   671,  1299,   671,   627,   671,
+   340,  1084,   466,   466,    97,    98,   988,   153,   153,   153,
+   678,   238,   964,   642,  1203,   406,  1452,   407,   287,  1305,
+   387,  1550,  1304,  1300,  1443,  1299,   489,   496,   118,   119,
   1305,  1380,  1078,  1304,  1300,   925,  1299,  1022,  1511,   238,
   1450,  1228,  1132,  1305,   459,  1150,  1304,  1300,   965,  1299,
   1369,   990,     7,   126,   127,    10,  1204,   277,  1205,   639,
-  1206,  1251,  1529,   768,   831,   536,   639,    79,   692,   693,
-   341,  1020,  1452,   440,   365,  1305,   804,   103,  1304,  1300,
+  1206,   440,  1529,  1251,   768,   536,   639,    79,   692,   693,
+   341,  1020,  1452,   831,   365,  1305,   804,   103,  1304,  1300,
    587,  1299,  1386,   644,  1314,  1507,   277,   671,   132,  1484,
   1478,    22,  1530,  1532,   141,   141,  1118,   141,   231,    79,
-   610,     8,     9,     0,    79,  1405,    28,    29,   466,  1316,
-     0,     0,     0,   126,   127,     0,     0,   185,    13,    79,
+   610,     8,     9,     0,    79,  1405,    28,    29,   466,     0,
+  1316,     0,     0,   126,   127,     0,     0,   185,    13,    79,
      0,     0,  1305,   638,     0,  1304,  1300,   218,  1299,     0,
    232,     0,  1116,     0,   103,     0,   301,   611,    33,    22,
      0,   238,   277,     0,     0,   242,   103,     0,  1271,   639,
@@ -2420,158 +2420,158 @@ static const short yytable[] = {    58,
 static const short yycheck[] = {     4,
    340,    24,     4,     4,    54,     4,   662,   125,   191,   379,
     34,    75,     4,   156,    14,   660,   379,   231,   146,   147,
-   831,   379,   460,   725,   346,   350,    83,   132,     4,   439,
+   493,   379,   460,   725,   346,   831,    83,   132,     4,   439,
    650,    36,   734,    79,    36,    36,    41,    36,    34,    41,
-    41,  1276,    41,   226,    36,   297,   298,    53,  1411,    41,
+    41,  1276,    41,   226,    36,   297,   298,   350,  1411,    41,
    923,    56,   191,   221,     4,   412,   643,  1299,    61,    34,
-    36,   200,    11,  1446,  1444,    41,    71,    11,  1306,   106,
-   107,  1441,    59,    59,    38,  1313,   328,     1,    83,    65,
-    56,    11,    82,    60,     1,    56,    36,    58,  1468,   743,
-    60,    41,   595,   276,   748,   141,    31,    32,  1428,   602,
-     0,   106,   107,  1135,  1136,   105,   199,   200,    48,     3,
-     4,     5,     9,   100,    63,     0,   128,  1149,    75,   284,
-   285,   133,   146,   147,   148,    79,  1509,  1497,   132,   133,
-   135,   195,   346,   135,   111,    59,   111,  1467,    61,   185,
-   110,   761,    59,     1,   764,   151,    63,   111,    83,    12,
-   146,   147,   148,   177,    94,   160,    75,   340,   160,   135,
-    89,   110,    91,    57,    58,    62,   110,  1547,  1498,  1411,
-  1533,   106,   107,   513,    61,    55,   182,  1415,   535,    96,
-   110,   177,    55,    12,   160,   135,   596,    81,   111,    14,
-    63,   194,    60,    49,    60,    75,    94,    60,    23,   202,
-    63,    59,    61,    12,    34,    63,  1238,   136,     8,     9,
-   160,   146,   147,   867,    14,  1247,  1248,  1455,  1250,    63,
-   191,   386,   387,   661,   111,    27,    28,   227,   199,   200,
-    32,    60,   337,  1044,    63,    98,    65,    37,    96,    64,
-   175,   176,   110,  1478,   110,    61,    46,   110,    48,    60,
-    48,    60,   111,    63,    63,    63,   299,   300,   229,    61,
-   437,    94,  1500,    65,    48,    75,   110,    48,   445,    98,
-   633,   314,   277,   417,   317,    94,   333,   320,   283,    48,
-   323,   324,   287,    75,   321,   287,   906,   907,   242,    98,
-    75,   334,   614,     7,    94,   111,    94,    95,   123,   110,
-   887,   626,   110,   431,   432,   444,   663,   961,    94,   111,
-    94,   287,   110,    94,    95,   685,   321,   147,   148,   973,
-   145,   464,    39,  1469,    38,    94,   110,   685,   333,   110,
-     4,     5,   382,   337,   499,  1481,   341,   287,    55,    25,
-   352,   681,    48,    55,   109,  1491,   346,   177,   283,    48,
-   443,   444,    61,    48,  1008,    25,  1010,   286,   451,    65,
-    58,   373,  1508,    75,  1396,  1397,    65,  1178,   871,   373,
-   463,     4,     5,    59,   379,     4,     5,    63,   383,    61,
-     9,  1527,    55,    57,    58,   422,   321,   379,    94,   453,
+    36,   200,  1441,    53,  1444,    41,    71,    11,  1306,   106,
+   107,  1446,    38,  1428,    59,  1313,   328,    11,    83,     1,
+    56,    11,    82,    94,     1,    56,    36,    58,  1468,   743,
+    60,    41,   595,   276,   748,   141,    31,    32,     0,   602,
+    55,   106,   107,  1135,  1136,   105,   199,   200,    63,     3,
+     4,     5,  1467,     0,    60,   100,   128,  1149,  1497,   284,
+   285,   133,   146,   147,   148,    79,   132,   133,    48,    63,
+   135,   195,   346,   135,  1509,     9,   111,    59,    75,   185,
+   110,   761,    59,  1498,   764,   111,    63,     1,    83,    12,
+   146,   147,   148,   177,    63,   160,    75,   340,   160,   135,
+    89,   151,    91,    57,    58,   111,   110,  1547,    48,  1411,
+  1533,   106,   107,   513,    94,    95,   110,  1415,   535,    96,
+   110,   177,    94,    12,   160,   135,   596,    81,    62,    14,
+   110,   194,   182,     7,    61,    61,    60,    60,    23,   202,
+    63,   110,    48,    12,    34,    59,  1238,   136,    63,    63,
+   160,   146,   147,   867,    94,  1247,  1248,  1455,  1250,    94,
+   191,   386,   387,   661,    38,    27,    28,   227,   199,   200,
+    32,    60,   337,    48,    63,    98,    65,    48,  1044,    64,
+   175,   176,    96,  1478,   111,   111,   110,   110,    94,    95,
+    65,    60,    60,    63,    63,   110,   299,   300,   229,    61,
+    61,    49,  1500,    65,   110,    75,    48,    48,    75,    98,
+   633,   314,   277,   417,   317,    61,   333,   320,   283,    94,
+   323,   324,   287,    94,   321,   287,   906,   907,   242,    98,
+    75,   334,   614,    60,    94,     8,     9,    61,   123,   110,
+   887,    14,   110,   431,   432,   444,   663,   961,    25,   111,
+   111,   287,    94,    94,    95,   685,   321,   147,   148,   973,
+   145,   464,   109,   626,    37,   111,    61,   685,   333,   110,
+  1469,   337,   382,    46,   499,    48,   341,   287,    48,    25,
+   352,   681,  1481,   110,    60,    61,   346,   177,   283,    48,
+   443,   444,  1491,    48,  1008,    65,  1010,   286,   451,    48,
+    58,   373,    55,    55,  1396,  1397,    32,   373,   871,  1508,
+   463,    48,  1178,    59,   379,     4,     5,    63,   383,    48,
+     9,    94,    75,    75,    94,   422,   321,   379,  1527,   453,
    483,   894,    48,   218,   219,    94,  1016,  1017,   333,    94,
-    95,     4,     5,    48,  1550,    60,   231,   431,   432,   433,
-    96,    48,   383,   384,    48,   110,  1289,     4,     5,    32,
-   425,    76,    55,    48,    57,    58,    55,    36,    57,    58,
-   933,    65,    41,    48,    75,   431,   432,   433,    94,    95,
-    63,    63,    71,    48,   379,     4,     5,   450,  1150,    94,
-    95,   501,    81,    75,    57,    58,   461,    94,   868,   461,
-    94,    95,   461,   466,    59,   436,    95,    60,    61,    94,
-    57,    58,   443,   444,   511,  1348,   447,   514,    81,    94,
-   451,   518,    55,    48,  1357,  1358,   529,   530,   313,    94,
+    95,     4,     5,    48,    55,    94,   231,   431,   432,   433,
+    96,  1550,   383,   384,     4,     5,  1289,    94,   891,    63,
+   425,    55,    63,    48,    75,    94,    55,    36,    57,    58,
+   933,    75,    41,    48,    75,   431,   432,   433,    94,    95,
+    65,    75,    71,    48,   379,     4,     5,   450,  1150,    94,
+    95,   501,    81,   437,    57,    58,   461,    55,   868,   461,
+    55,   445,   461,   466,    63,   436,    95,    57,    58,    94,
+    95,    59,   443,   444,   511,  1348,   447,   514,    81,    94,
+   451,   518,    75,    48,  1357,  1358,   529,   530,   313,    94,
    425,   321,    48,   191,   531,     4,   431,   432,    57,    58,
     48,   199,   200,     4,     5,   542,   511,   461,    63,   514,
    547,   461,    48,   518,   519,   520,   521,   522,   888,   576,
     75,   959,    81,    48,   349,   888,   531,    36,   226,    94,
-   888,   502,    41,    55,   111,    48,   573,   542,    94,    87,
-    88,   709,   579,   711,    92,    93,    94,    95,   716,    60,
-    61,     4,     5,    75,   876,    59,    57,    58,    94,    95,
+   888,   502,    41,    55,    39,    48,   573,   542,    94,    87,
+    88,   709,   579,   711,    92,    93,    94,    95,   716,    59,
+    55,     4,     5,    75,   876,    65,    57,    58,    94,   111,
    489,     3,     4,     5,   921,     3,     4,     5,    48,    94,
-   575,   576,    48,     4,     5,    55,   511,    94,   276,   514,
-    81,    94,    55,   518,   519,   520,   521,   522,  1091,   639,
-   595,   641,   642,   758,   777,    75,   531,   602,    55,  1472,
+   575,   576,    48,     4,     5,    55,   511,    59,   276,   514,
+    81,    94,    60,   518,   519,   520,   521,   522,  1091,   639,
+   595,   641,   642,   758,   777,    75,   531,   602,    76,  1472,
     48,   719,   432,   433,    57,    58,   606,   542,   631,   702,
     48,  1114,    55,    55,    94,    57,    58,    55,    94,    57,
-    58,   873,     3,     4,     5,     6,    57,    58,    81,    48,
-    76,   681,    48,   458,    25,   640,    27,    28,   661,   644,
-   575,   576,   340,    63,  1054,  1303,    94,  1305,  1050,  1051,
-    81,  1053,     3,     4,     5,    75,    94,   592,   593,    55,
-   595,    42,   876,  1101,   728,   729,   110,   602,    59,   640,
-   110,   642,    63,   737,    55,    94,    57,    58,    94,    75,
-   685,   511,   732,    55,   514,    95,   384,     4,     5,   833,
-    48,  1129,   110,     3,     4,     5,   110,     3,     4,     5,
-   530,   531,    11,    75,    55,    96,    57,    58,    89,  1049,
-   681,   111,   542,    55,    60,    61,   541,    48,     3,    55,
-   725,    63,   727,   725,    55,   727,   725,    63,   733,   734,
-   418,   702,   734,    75,   705,   734,    94,   425,   743,    75,
-    57,    58,    61,   748,    75,   443,   444,    57,    58,    59,
-   685,    57,    58,   451,    48,    94,   732,   733,    55,    27,
-    28,    55,   733,    94,    81,   463,    63,    55,   739,     4,
-     5,   725,   602,   727,    76,   725,    78,   727,    75,   733,
-   734,    75,    60,    61,   734,   483,   113,    75,   956,   957,
-   958,   418,  1437,    63,     3,     4,     5,     6,   425,   842,
-    94,   838,    84,    85,   502,  1461,   631,    25,   743,    27,
-    28,    95,    76,   748,    78,   744,   745,   746,   643,    95,
+    58,   873,     3,     4,     5,     6,    57,    58,    81,    27,
+    28,   681,    75,   458,    25,   640,    27,    28,   661,   644,
+   575,   576,   340,    60,  1054,    94,    94,    76,    65,    78,
+    81,    55,     3,     4,     5,    55,    94,   592,   593,    76,
+   595,    42,   876,  1101,   728,   729,    55,   602,    59,   640,
+    55,   642,    63,   737,    55,    76,    57,    58,    63,    95,
+   685,   511,   732,    76,   514,    78,   384,     4,     5,   833,
+    75,  1129,   110,     3,     4,     5,   110,     3,     4,     5,
+   530,   531,    60,    61,    55,    96,    57,    58,    89,  1049,
+   681,   110,   542,     4,     5,   110,   541,    48,    11,    55,
+   725,   111,   727,   725,    55,   727,   725,    63,   733,   734,
+   418,   702,   734,     3,   705,   734,    61,   425,   743,    75,
+    57,    58,    60,   748,    75,   443,   444,    57,    58,    59,
+   685,    57,    58,   451,    48,    94,   732,   733,    76,   113,
+    78,    55,   733,    94,    81,   463,    57,    58,   739,     4,
+     5,   725,   602,   727,  1303,   725,  1305,   727,    63,   733,
+   734,    75,    60,    61,   734,   483,    84,    85,   956,   957,
+   958,   418,  1437,    95,     3,     4,     5,     6,   425,   842,
+    94,   838,    60,    61,   502,  1461,   631,    25,   743,    27,
+    28,  1050,  1051,   748,  1053,   744,   745,   746,   643,    95,
     55,   509,    57,    58,    55,   830,   869,   870,    60,   834,
     27,    28,    63,    42,   871,    32,    71,  1002,  1003,  1004,
-    49,    59,   113,   668,    75,    63,    81,    94,    57,    58,
-     3,     4,     5,   899,   111,   999,   861,     3,     4,     5,
+    49,    59,   113,   668,    75,    63,    81,   111,    57,    58,
+     3,     4,     5,   899,    94,   999,   861,     3,     4,     5,
     95,    55,   867,    60,    61,    94,   871,    75,    65,    63,
-   894,    75,    81,    75,    60,    75,   876,   110,    96,    65,
-    89,    75,   509,   888,   572,   890,   574,   575,    60,   894,
-    76,  1035,  1036,     8,     9,   830,   888,    11,   894,    14,
-    60,    61,    55,   110,    57,    58,    59,   110,   113,   933,
+   894,    75,    81,   755,   756,   757,   876,    75,    96,    75,
+    89,    75,   509,   888,   572,   890,   574,   575,   110,   894,
+    60,  1035,  1036,     8,     9,   830,   888,    11,   894,    14,
+    60,    61,    55,   110,    57,    58,    59,   110,   110,   933,
     55,    57,    58,   977,   602,   110,    65,   954,    63,   983,
-   984,   609,    37,   987,   988,    61,   861,   991,   933,   110,
-    75,    46,   867,   111,   869,   870,   871,   933,   111,   985,
-   110,   771,   947,    75,   642,   572,   113,   574,   575,   954,
-   755,   756,   757,   888,    75,   890,   961,   892,   893,   894,
-    65,  1089,  1090,    60,    61,  1305,  1110,    75,   973,     4,
-     5,    60,    60,    61,   113,  1119,  1120,    60,   113,   110,
-  1124,  1125,   609,   681,  1112,  1113,   110,    76,   110,    78,
-    59,   996,   110,    55,   996,   966,   967,   996,   933,     8,
-   113,    94,  1359,  1008,   702,  1010,     3,     4,     5,     6,
-    45,    48,   947,  1056,  1371,    94,   111,    61,    37,   954,
-    55,    61,    57,    58,   995,  1169,   961,    65,   110,    65,
-   110,   985,    81,    82,    83,    84,    85,    65,   973,    63,
-   870,   871,   996,   110,   110,    42,   996,  1093,     4,     5,
-   110,    65,    79,     9,   879,    65,   113,    65,    65,    60,
-    57,    58,   887,    94,   894,  1089,  1090,  1091,  1438,  1112,
-  1113,  1428,    63,  1008,   436,  1010,   103,  1114,  1101,   777,
-  1438,  1225,   111,   771,   110,   447,  1091,   110,  1112,  1113,
-  1114,    76,    89,  1089,  1090,  1091,    76,   110,   110,    55,
-    76,    57,    58,   933,   110,   132,    76,   110,  1465,  1114,
+   984,   609,    37,   987,   988,    61,   861,   991,   933,   111,
+    75,    46,   867,   111,   869,   870,   871,   933,   113,   985,
+   113,   771,   947,    55,   642,   572,   110,   574,   575,   954,
+    75,    63,    75,   888,    75,   890,   961,   892,   893,   894,
+    65,  1089,  1090,    75,    60,  1305,  1110,   110,   973,     4,
+     5,    60,    61,    60,    61,  1119,  1120,   110,   113,   113,
+  1124,  1125,   609,   681,  1112,  1113,    81,    82,    83,    84,
+    85,   996,   110,    59,   996,   966,   967,   996,   933,   110,
+    55,     8,  1359,  1008,   702,  1010,     3,     4,     5,     6,
+    45,   113,   947,  1056,  1371,    94,    48,    94,   111,   954,
+    55,    61,    57,    58,   995,  1169,   961,    37,    65,    65,
+   110,   985,    61,    63,    65,   110,   110,   110,   973,   110,
+   870,   871,   996,    65,    65,    42,   996,  1093,     4,     5,
+    65,   113,    79,     9,   879,    94,    65,    60,    63,   111,
+    57,    58,   887,   110,   894,  1089,  1090,  1091,  1438,  1112,
+  1113,  1428,   110,  1008,   436,  1010,   103,  1114,  1101,   777,
+  1438,  1225,   110,   771,   110,   447,  1091,   110,  1112,  1113,
+  1114,    76,    89,  1089,  1090,  1091,     4,     5,    76,    55,
+    76,    57,    58,   933,    76,   132,   110,    60,  1465,  1114,
   1467,   110,  1452,    63,   141,    71,  1112,  1113,  1114,    25,
-  1264,    27,    28,    63,    60,    81,  1483,   110,  1165,  1166,
-  1167,  1168,     3,     4,     5,    63,     7,     8,     9,  1176,
-   113,  1498,   110,    95,   111,  1150,   834,   110,  1150,   110,
-    89,  1150,    48,    59,  1089,  1090,  1091,    63,   185,   847,
-   113,   849,   110,   851,   110,    57,    37,   110,   113,   113,
+  1264,    27,    28,    63,   110,    81,  1483,    63,  1165,  1166,
+  1167,  1168,     3,     4,     5,   110,     7,     8,     9,  1176,
+   113,  1498,   111,   110,   110,  1150,   834,    55,  1150,    57,
+    58,  1150,    95,    59,  1089,  1090,  1091,    63,   185,   847,
+    89,   849,   113,   851,    48,   110,    37,   113,   110,   113,
   1141,  1142,   110,  1144,  1145,   110,  1147,  1112,  1113,  1114,
-   110,  1245,  1246,    60,    55,   111,    57,    58,    59,    65,
+   110,  1245,  1246,   110,    55,   111,    57,    58,    59,    65,
     96,   218,  1146,   881,    60,    25,  1150,    27,    28,  1343,
-  1150,    65,    60,   110,    94,   110,  1211,   834,   111,  1211,
-  1211,  1036,  1211,    94,    94,   242,  1221,   111,   113,    94,
-   847,   110,   849,   110,   851,     4,     5,   915,     8,    59,
-   113,   110,   110,    63,   105,   106,   107,    79,    80,    81,
-    82,    83,    84,    85,    65,   933,    63,   110,   110,   110,
-   110,   110,    48,  1303,   881,  1305,  1299,  1294,   110,   110,
+  1150,    65,    60,    60,   111,   110,  1211,   834,   110,  1211,
+  1211,  1036,  1211,    94,    94,   242,  1221,    94,   111,    94,
+   847,   110,   849,   110,   851,     4,     5,   915,   113,    59,
+     8,   110,   110,    63,   105,   106,   107,    79,    80,    81,
+    82,    83,    84,    85,   113,   933,    65,   110,   110,   110,
+   110,   110,    63,  1303,   881,  1305,  1299,  1294,   110,   110,
   1090,  1091,   110,   379,  1235,  1236,    96,   110,   113,  1452,
    106,   107,     3,     4,     5,   110,    55,  1420,    57,    58,
-    34,   110,   110,  1113,  1114,  1110,  1221,   110,   915,    97,
-   110,   110,    71,    63,  1299,  1423,  1424,  1299,   110,  1304,
-  1299,  1306,    81,   110,  1306,  1306,   110,  1306,  1313,   425,
-   110,  1313,  1313,   110,  1313,   113,    63,  1381,   345,    61,
-    61,     9,    61,    16,    61,    94,    57,    58,    94,    61,
-    94,  1368,   109,  1304,  1305,    94,     4,     5,    99,     7,
-     8,     9,    17,   705,    12,    61,    14,    61,   110,    11,
-   110,    61,   110,   110,  1325,  1326,  1327,    61,  1382,    94,
-    60,    29,   389,    31,    32,   110,    61,    65,    11,    37,
-     3,     4,     5,    11,  1411,  1412,    61,   739,    46,    61,
-  1423,  1424,   110,  1208,   110,    61,  1382,    55,  1425,    57,
-    58,  1535,     0,     0,     3,     4,     5,     0,     2,  1423,
-  1424,  1425,   407,  1453,  1441,   352,  1411,  1412,   160,  1411,
-  1415,  1475,  1411,  1415,  1415,  1103,  1415,  1105,   888,  1107,
-  1425,  1436,  1393,  1394,    57,    58,   160,  1423,  1424,  1425,
-    98,   458,   733,  1438,   727,  1101,  1441,    93,   493,  1444,
-  1407,   138,  1444,  1444,  1547,  1444,   279,   283,    57,    58,
+    48,   110,   110,  1113,  1114,  1110,  1221,   110,   915,   110,
+    97,    34,    71,   110,  1299,  1423,  1424,  1299,   110,  1304,
+  1299,  1306,    81,   113,  1306,  1306,   110,  1306,  1313,   425,
+   110,  1313,  1313,   110,  1313,   110,    63,  1381,   345,    63,
+    61,    61,     9,    61,    16,    94,    57,    58,    94,    61,
+    94,  1368,    61,  1304,  1305,   109,     4,     5,    99,     7,
+     8,     9,    94,   705,    12,    17,    14,    61,    61,    11,
+   110,   110,   110,   110,  1325,  1326,  1327,    61,  1382,    61,
+    94,    29,   389,    31,    32,    60,    65,    61,   110,    37,
+     3,     4,     5,    61,  1411,  1412,    11,   739,    46,    61,
+  1423,  1424,   110,  1208,   110,    11,  1382,    55,  1425,    57,
+    58,  1535,    61,     0,     3,     4,     5,     0,     0,  1423,
+  1424,  1425,     2,  1453,  1441,   407,  1411,  1412,  1436,  1411,
+  1415,  1475,  1411,  1415,  1415,  1103,  1415,  1105,   352,  1107,
+  1425,   888,  1393,  1394,    57,    58,   733,  1423,  1424,  1425,
+    98,   458,   727,  1438,  1101,   160,  1441,   160,    93,  1444,
+   138,  1547,  1444,  1444,  1407,  1444,   279,   283,    57,    58,
   1455,  1304,   879,  1455,  1455,   668,  1455,   768,  1495,   486,
   1497,  1129,   959,  1468,   220,   996,  1468,  1468,   727,  1468,
   1295,   733,     3,     4,     5,     6,  1103,  1412,  1105,   595,
-  1107,  1148,  1519,   508,   576,   321,   602,     4,  1423,  1424,
-  1425,   766,  1497,   182,   123,  1500,  1533,    14,  1500,  1500,
+  1107,   182,  1519,  1148,   508,   321,   602,     4,  1423,  1424,
+  1425,   766,  1497,   576,   123,  1500,  1533,    14,  1500,  1500,
    337,  1500,  1306,  1438,  1212,  1483,  1441,  1195,    25,  1461,
   1458,    42,  1520,  1522,    31,    32,   942,    34,    49,    36,
-     3,     4,     5,    -1,    41,  1350,    57,    58,  1499,  1221,
-    -1,    -1,    -1,     4,     5,    -1,    -1,    54,     9,    56,
+     3,     4,     5,    -1,    41,  1350,    57,    58,  1499,    -1,
+  1221,    -1,    -1,     4,     5,    -1,    -1,    54,     9,    56,
     -1,    -1,  1547,   379,    -1,  1547,  1547,    64,  1547,    -1,
     81,    -1,  1382,    -1,    71,    -1,    39,    40,    89,    42,
     -1,   588,  1497,    -1,    -1,    82,    83,    -1,  1195,   685,
@@ -4228,20 +4228,18 @@ case 53:
 case 54:
 #line 516 "parse.y"
 {
-                 tree defarg;
-                 arg_looking_for_template = 1;
-                 defarg = lookup_name (yyvsp[0].ttype, 0);
-                 arg_looking_for_template = 0;
-                       
-                 if (!defarg || defarg == error_mark_node
-                     || (TREE_CODE (defarg) != TEMPLATE_DECL
-                         && TREE_CODE (defarg) != TEMPLATE_TEMPLATE_PARM))
-                   defarg = do_identifier (yyvsp[0].ttype, 1);
-                 yyval.ttype = build_tree_list (defarg, yyvsp[-2].ttype);
-               ;
+                 if (TREE_CODE (yyvsp[0].ttype) != TEMPLATE_DECL
+                     && TREE_CODE (yyvsp[0].ttype) != TEMPLATE_TEMPLATE_PARM
+                     && TREE_CODE (yyvsp[0].ttype) != TYPE_DECL)
+                   {
+                     error ("invalid default template argument");
+                     yyvsp[0].ttype = error_mark_node;
+                   }
+                 yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype);
+               ;
     break;}
 case 55:
-#line 533 "parse.y"
+#line 531 "parse.y"
 { 
                   if (yyvsp[-1].ttype) 
                     end_template_decl (); 
@@ -4250,7 +4248,7 @@ case 55:
                ;
     break;}
 case 56:
-#line 541 "parse.y"
+#line 539 "parse.y"
 { 
                   if (yyvsp[-1].ttype) 
                     end_template_decl ();
@@ -4259,25 +4257,25 @@ case 56:
                 ;
     break;}
 case 57:
-#line 551 "parse.y"
+#line 549 "parse.y"
 {;
     break;}
 case 58:
-#line 553 "parse.y"
+#line 551 "parse.y"
 {;
     break;}
 case 59:
-#line 555 "parse.y"
+#line 553 "parse.y"
 {
                  note_list_got_semicolon (yyvsp[-2].ftype.t);
                ;
     break;}
 case 60:
-#line 559 "parse.y"
+#line 557 "parse.y"
 { pedwarn ("empty declaration"); ;
     break;}
 case 62:
-#line 562 "parse.y"
+#line 560 "parse.y"
 {
                  tree t, attrs;
                  split_specs_attrs (yyvsp[-1].ftype.t, &t, &attrs);
@@ -4286,27 +4284,27 @@ case 62:
                ;
     break;}
 case 66:
-#line 575 "parse.y"
+#line 573 "parse.y"
 { yyval.itype = 0; ;
     break;}
 case 67:
-#line 577 "parse.y"
+#line 575 "parse.y"
 { yyval.itype = 1; ;
     break;}
 case 73:
-#line 593 "parse.y"
+#line 591 "parse.y"
 { finish_function (lineno, (int)yyvsp[-1].itype, 0); ;
     break;}
 case 74:
-#line 595 "parse.y"
+#line 593 "parse.y"
 { ;
     break;}
 case 75:
-#line 597 "parse.y"
+#line 595 "parse.y"
 { ;
     break;}
 case 76:
-#line 602 "parse.y"
+#line 600 "parse.y"
 {
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, yyvsp[-1].ttype);
                  if (yyvsp[-2].ttype != current_class_type)
@@ -4317,11 +4315,11 @@ case 76:
                ;
     break;}
 case 77:
-#line 611 "parse.y"
+#line 609 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 78:
-#line 613 "parse.y"
+#line 611 "parse.y"
 {
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-4].ttype, yyvsp[-3].ttype);
                  if (yyvsp[-4].ttype != current_class_type)
@@ -4333,7 +4331,7 @@ case 78:
                ;
     break;}
 case 79:
-#line 623 "parse.y"
+#line 621 "parse.y"
 {
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, yyvsp[-1].ttype);
                  if (yyvsp[-2].ttype != current_class_type)
@@ -4344,11 +4342,11 @@ case 79:
                ;
     break;}
 case 80:
-#line 632 "parse.y"
+#line 630 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 81:
-#line 634 "parse.y"
+#line 632 "parse.y"
 {
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-4].ttype, yyvsp[-3].ttype);
                  if (yyvsp[-4].ttype != current_class_type)
@@ -4360,7 +4358,7 @@ case 81:
                ;
     break;}
 case 82:
-#line 644 "parse.y"
+#line 642 "parse.y"
 {
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, yyvsp[-1].ttype);
                  if (yyvsp[-2].ttype != current_class_type)
@@ -4371,11 +4369,11 @@ case 82:
                ;
     break;}
 case 83:
-#line 653 "parse.y"
+#line 651 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 84:
-#line 655 "parse.y"
+#line 653 "parse.y"
 {
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-4].ttype, yyvsp[-3].ttype);
                  if (yyvsp[-4].ttype != current_class_type)
@@ -4387,7 +4385,7 @@ case 84:
                ;
     break;}
 case 85:
-#line 665 "parse.y"
+#line 663 "parse.y"
 {
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, yyvsp[-1].ttype);
                  if (yyvsp[-2].ttype != current_class_type)
@@ -4398,11 +4396,11 @@ case 85:
                ;
     break;}
 case 86:
-#line 674 "parse.y"
+#line 672 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 87:
-#line 676 "parse.y"
+#line 674 "parse.y"
 {
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-4].ttype, yyvsp[-3].ttype);
                  if (yyvsp[-4].ttype != current_class_type)
@@ -4414,7 +4412,7 @@ case 87:
                ;
     break;}
 case 88:
-#line 689 "parse.y"
+#line 687 "parse.y"
 { tree specs, attrs;
                  split_specs_attrs (yyvsp[-1].ftype.t, &specs, &attrs);
                  if (! start_function (specs, yyvsp[0].ttype, attrs, 0))
@@ -4423,7 +4421,7 @@ case 88:
                  yyval.ttype = NULL_TREE; ;
     break;}
 case 89:
-#line 696 "parse.y"
+#line 694 "parse.y"
 { tree specs, attrs;
                  split_specs_attrs (yyvsp[-1].ttype, &specs, &attrs);
                  if (! start_function (specs, yyvsp[0].ttype, attrs, 0))
@@ -4432,14 +4430,14 @@ case 89:
                  yyval.ttype = NULL_TREE; ;
     break;}
 case 90:
-#line 703 "parse.y"
+#line 701 "parse.y"
 { if (! start_function (NULL_TREE, yyval.ttype, NULL_TREE, 0))
                    YYERROR1;
                  reinit_parse_for_function ();
                  yyval.ttype = NULL_TREE; ;
     break;}
 case 91:
-#line 708 "parse.y"
+#line 706 "parse.y"
 { tree specs, attrs;
                  split_specs_attrs (yyvsp[-1].ttype, &specs, &attrs);
                  if (! start_function (specs, yyvsp[0].ttype, attrs, 0))
@@ -4448,30 +4446,30 @@ case 91:
                  yyval.ttype = NULL_TREE; ;
     break;}
 case 92:
-#line 715 "parse.y"
+#line 713 "parse.y"
 { if (! start_function (NULL_TREE, yyval.ttype, NULL_TREE, 0))
                    YYERROR1;
                  reinit_parse_for_function ();
                  yyval.ttype = NULL_TREE; ;
     break;}
 case 93:
-#line 723 "parse.y"
+#line 721 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 94:
-#line 725 "parse.y"
+#line 723 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-3].ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 95:
-#line 727 "parse.y"
+#line 725 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 96:
-#line 729 "parse.y"
+#line 727 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-3].ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 97:
-#line 736 "parse.y"
+#line 734 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ttype);
                  yyval.ttype = start_method (specs, yyvsp[0].ttype);
                 rest_of_mdef:
@@ -4482,38 +4480,38 @@ case 97:
                  reinit_parse_for_method (yychar, yyval.ttype); ;
     break;}
 case 98:
-#line 745 "parse.y"
+#line 743 "parse.y"
 { yyval.ttype = start_method (NULL_TREE, yyvsp[0].ttype); goto rest_of_mdef; ;
     break;}
 case 99:
-#line 747 "parse.y"
+#line 745 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ftype.t);
                  yyval.ttype = start_method (specs, yyvsp[0].ttype); goto rest_of_mdef; ;
     break;}
 case 100:
-#line 750 "parse.y"
+#line 748 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ttype);
                  yyval.ttype = start_method (specs, yyvsp[0].ttype); goto rest_of_mdef; ;
     break;}
 case 101:
-#line 753 "parse.y"
+#line 751 "parse.y"
 { yyval.ttype = start_method (NULL_TREE, yyval.ttype); goto rest_of_mdef; ;
     break;}
 case 102:
-#line 755 "parse.y"
+#line 753 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ttype);
                  yyval.ttype = start_method (specs, yyvsp[0].ttype); goto rest_of_mdef; ;
     break;}
 case 103:
-#line 758 "parse.y"
+#line 756 "parse.y"
 { yyval.ttype = start_method (NULL_TREE, yyval.ttype); goto rest_of_mdef; ;
     break;}
 case 104:
-#line 760 "parse.y"
+#line 758 "parse.y"
 { yyval.ttype = finish_member_template_decl (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 105:
-#line 765 "parse.y"
+#line 763 "parse.y"
 {
                  if (! current_function_parms_stored)
                    store_parm_decls ();
@@ -4521,19 +4519,19 @@ case 105:
                ;
     break;}
 case 106:
-#line 774 "parse.y"
+#line 772 "parse.y"
 { store_return_init (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 107:
-#line 776 "parse.y"
+#line 774 "parse.y"
 { store_return_init (yyval.ttype, yyvsp[-1].ttype); ;
     break;}
 case 108:
-#line 778 "parse.y"
+#line 776 "parse.y"
 { store_return_init (yyval.ttype, NULL_TREE); ;
     break;}
 case 109:
-#line 783 "parse.y"
+#line 781 "parse.y"
 {
                  if (yyvsp[0].itype == 0)
                    error ("no base initializers given following ':'");
@@ -4545,7 +4543,7 @@ case 109:
                ;
     break;}
 case 110:
-#line 796 "parse.y"
+#line 794 "parse.y"
 {
                  if (! current_function_parms_stored)
                    store_parm_decls ();
@@ -4564,15 +4562,15 @@ case 110:
                ;
     break;}
 case 111:
-#line 816 "parse.y"
+#line 814 "parse.y"
 { yyval.itype = 0; ;
     break;}
 case 112:
-#line 818 "parse.y"
+#line 816 "parse.y"
 { yyval.itype = 1; ;
     break;}
 case 115:
-#line 825 "parse.y"
+#line 823 "parse.y"
 {
                  if (current_class_name)
                    pedwarn ("anachronistic old style base class initializer");
@@ -4580,7 +4578,7 @@ case 115:
                ;
     break;}
 case 116:
-#line 831 "parse.y"
+#line 829 "parse.y"
 {
                  if (current_class_name)
                    pedwarn ("anachronistic old style base class initializer");
@@ -4588,77 +4586,77 @@ case 116:
                ;
     break;}
 case 117:
-#line 837 "parse.y"
+#line 835 "parse.y"
 { expand_member_init (current_class_ref, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 118:
-#line 839 "parse.y"
+#line 837 "parse.y"
 { expand_member_init (current_class_ref, yyvsp[-1].ttype, void_type_node); ;
     break;}
 case 119:
-#line 841 "parse.y"
+#line 839 "parse.y"
 { expand_member_init (current_class_ref, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 120:
-#line 843 "parse.y"
+#line 841 "parse.y"
 { expand_member_init (current_class_ref, yyvsp[-1].ttype, void_type_node); ;
     break;}
 case 121:
-#line 845 "parse.y"
+#line 843 "parse.y"
 { expand_member_init (current_class_ref, TYPE_MAIN_DECL (yyvsp[-3].ttype),
                                      yyvsp[-1].ttype); ;
     break;}
 case 122:
-#line 848 "parse.y"
+#line 846 "parse.y"
 { expand_member_init (current_class_ref, TYPE_MAIN_DECL (yyvsp[-1].ttype),
                                      void_type_node); ;
     break;}
 case 134:
-#line 874 "parse.y"
+#line 872 "parse.y"
 { do_type_instantiation (yyvsp[-1].ftype.t, NULL_TREE);
                  yyungetc (';', 1); ;
     break;}
 case 136:
-#line 878 "parse.y"
+#line 876 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ftype.t);
                  do_decl_instantiation (specs, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 138:
-#line 882 "parse.y"
+#line 880 "parse.y"
 { do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 140:
-#line 885 "parse.y"
+#line 883 "parse.y"
 { do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 142:
-#line 888 "parse.y"
+#line 886 "parse.y"
 { do_type_instantiation (yyvsp[-1].ftype.t, yyvsp[-4].ttype);
                  yyungetc (';', 1); ;
     break;}
 case 144:
-#line 893 "parse.y"
+#line 891 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ftype.t);
                  do_decl_instantiation (specs, yyvsp[0].ttype, yyvsp[-4].ttype); ;
     break;}
 case 146:
-#line 897 "parse.y"
+#line 895 "parse.y"
 { do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, yyvsp[-3].ttype); ;
     break;}
 case 148:
-#line 900 "parse.y"
+#line 898 "parse.y"
 { do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, yyvsp[-3].ttype); ;
     break;}
 case 150:
-#line 905 "parse.y"
+#line 903 "parse.y"
 { begin_explicit_instantiation(); ;
     break;}
 case 151:
-#line 908 "parse.y"
+#line 906 "parse.y"
 { end_explicit_instantiation(); ;
     break;}
 case 152:
-#line 916 "parse.y"
+#line 914 "parse.y"
 {
                  yyval.ttype = lookup_template_class (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE, NULL_TREE);
                  if (yyval.ttype != error_mark_node)
@@ -4666,7 +4664,7 @@ case 152:
                ;
     break;}
 case 153:
-#line 922 "parse.y"
+#line 920 "parse.y"
 {
                  yyval.ttype = lookup_template_class (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE, NULL_TREE);
                  if (yyval.ttype != error_mark_node)
@@ -4674,7 +4672,7 @@ case 153:
                ;
     break;}
 case 155:
-#line 932 "parse.y"
+#line 930 "parse.y"
 {
                  yyval.ttype = lookup_template_class (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE, NULL_TREE);
                  if (yyval.ttype != error_mark_node)
@@ -4682,7 +4680,7 @@ case 155:
                ;
     break;}
 case 157:
-#line 942 "parse.y"
+#line 940 "parse.y"
 {
                  /* Handle `Class<Class<Type>>' without space in the `>>' */
                  pedwarn ("`>>' should be `> >' in template class name");
@@ -4690,88 +4688,88 @@ case 157:
                ;
     break;}
 case 158:
-#line 951 "parse.y"
+#line 949 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 160:
-#line 957 "parse.y"
+#line 955 "parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
     break;}
 case 161:
-#line 959 "parse.y"
+#line 957 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 162:
-#line 963 "parse.y"
+#line 961 "parse.y"
 { processing_template_arg = 1; ;
     break;}
 case 163:
-#line 965 "parse.y"
+#line 963 "parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  processing_template_arg = 0; ;
     break;}
 case 164:
-#line 970 "parse.y"
+#line 968 "parse.y"
 { yyval.ttype = groktypename (yyvsp[0].ftype.t); ;
     break;}
 case 166:
-#line 976 "parse.y"
+#line 974 "parse.y"
 { yyval.code = NEGATE_EXPR; ;
     break;}
 case 167:
-#line 978 "parse.y"
+#line 976 "parse.y"
 { yyval.code = CONVERT_EXPR; ;
     break;}
 case 168:
-#line 980 "parse.y"
+#line 978 "parse.y"
 { yyval.code = PREINCREMENT_EXPR; ;
     break;}
 case 169:
-#line 982 "parse.y"
+#line 980 "parse.y"
 { yyval.code = PREDECREMENT_EXPR; ;
     break;}
 case 170:
-#line 984 "parse.y"
+#line 982 "parse.y"
 { yyval.code = TRUTH_NOT_EXPR; ;
     break;}
 case 171:
-#line 989 "parse.y"
+#line 987 "parse.y"
 { yyval.ttype = build_x_compound_expr (yyval.ttype); ;
     break;}
 case 173:
-#line 995 "parse.y"
+#line 993 "parse.y"
 { error ("ANSI C++ forbids an empty condition for `%s'",
                         cond_stmt_keyword);
                  yyval.ttype = integer_zero_node; ;
     break;}
 case 174:
-#line 999 "parse.y"
+#line 997 "parse.y"
 { yyval.ttype = condition_conversion (yyvsp[-1].ttype); ;
     break;}
 case 175:
-#line 1004 "parse.y"
+#line 1002 "parse.y"
 { error ("ANSI C++ forbids an empty condition for `%s'",
                         cond_stmt_keyword);
                  yyval.ttype = integer_zero_node; ;
     break;}
 case 176:
-#line 1008 "parse.y"
+#line 1006 "parse.y"
 { yyval.ttype = condition_conversion (yyvsp[-1].ttype); ;
     break;}
 case 177:
-#line 1013 "parse.y"
+#line 1011 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 178:
-#line 1015 "parse.y"
+#line 1013 "parse.y"
 { yyval.ttype = condition_conversion (yyval.ttype); ;
     break;}
 case 179:
-#line 1017 "parse.y"
+#line 1015 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 180:
-#line 1022 "parse.y"
+#line 1020 "parse.y"
 { {
                  tree d;
                  for (d = getdecls (); d; d = TREE_CHAIN (d))
@@ -4791,7 +4789,7 @@ case 180:
                ;
     break;}
 case 181:
-#line 1040 "parse.y"
+#line 1038 "parse.y"
 { 
                  cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-3].ttype, 1, LOOKUP_ONLYCONVERTING);
                  resume_momentary (yyvsp[-2].itype);
@@ -4801,7 +4799,7 @@ case 181:
                ;
     break;}
 case 187:
-#line 1059 "parse.y"
+#line 1057 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -4812,7 +4810,7 @@ case 187:
                ;
     break;}
 case 188:
-#line 1068 "parse.y"
+#line 1066 "parse.y"
 { 
                  if (processing_template_decl)
                    {
@@ -4824,50 +4822,50 @@ case 188:
                ;
     break;}
 case 190:
-#line 1083 "parse.y"
+#line 1081 "parse.y"
 { yyval.ttype = expr_tree_cons (NULL_TREE, yyval.ttype, 
                                  build_expr_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 191:
-#line 1086 "parse.y"
+#line 1084 "parse.y"
 { yyval.ttype = expr_tree_cons (NULL_TREE, yyval.ttype, 
                                  build_expr_list (NULL_TREE, error_mark_node)); ;
     break;}
 case 192:
-#line 1089 "parse.y"
+#line 1087 "parse.y"
 { chainon (yyval.ttype, build_expr_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 193:
-#line 1091 "parse.y"
+#line 1089 "parse.y"
 { chainon (yyval.ttype, build_expr_list (NULL_TREE, error_mark_node)); ;
     break;}
 case 194:
-#line 1096 "parse.y"
+#line 1094 "parse.y"
 { yyval.ttype = build_expr_list (NULL_TREE, yyval.ttype); ;
     break;}
 case 196:
-#line 1102 "parse.y"
+#line 1100 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 197:
-#line 1105 "parse.y"
+#line 1103 "parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  pedantic = yyvsp[-1].itype; ;
     break;}
 case 198:
-#line 1108 "parse.y"
+#line 1106 "parse.y"
 { yyval.ttype = build_x_indirect_ref (yyvsp[0].ttype, "unary *"); ;
     break;}
 case 199:
-#line 1110 "parse.y"
+#line 1108 "parse.y"
 { yyval.ttype = build_x_unary_op (ADDR_EXPR, yyvsp[0].ttype); ;
     break;}
 case 200:
-#line 1112 "parse.y"
+#line 1110 "parse.y"
 { yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, yyvsp[0].ttype); ;
     break;}
 case 201:
-#line 1114 "parse.y"
+#line 1112 "parse.y"
 { yyval.ttype = build_x_unary_op (yyvsp[-1].code, yyvsp[0].ttype);
                  if (yyvsp[-1].code == NEGATE_EXPR && TREE_CODE (yyvsp[0].ttype) == INTEGER_CST)
                    TREE_NEGATED_INT (yyval.ttype) = 1;
@@ -4875,7 +4873,7 @@ case 201:
                ;
     break;}
 case 202:
-#line 1121 "parse.y"
+#line 1119 "parse.y"
 { tree label = lookup_label (yyvsp[0].ttype);
                  if (pedantic)
                    pedwarn ("ANSI C++ forbids `&&'");
@@ -4890,115 +4888,115 @@ case 202:
                ;
     break;}
 case 203:
-#line 1134 "parse.y"
+#line 1132 "parse.y"
 { yyval.ttype = expr_sizeof (yyvsp[0].ttype); ;
     break;}
 case 204:
-#line 1136 "parse.y"
+#line 1134 "parse.y"
 { yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ftype.t)); ;
     break;}
 case 205:
-#line 1138 "parse.y"
+#line 1136 "parse.y"
 { yyval.ttype = grok_alignof (yyvsp[0].ttype); ;
     break;}
 case 206:
-#line 1140 "parse.y"
+#line 1138 "parse.y"
 { yyval.ttype = c_alignof (groktypename (yyvsp[-1].ftype.t)); 
                  check_for_new_type ("alignof", yyvsp[-1].ftype); ;
     break;}
 case 207:
-#line 1146 "parse.y"
+#line 1144 "parse.y"
 { yyval.ttype = build_new (NULL_TREE, yyvsp[0].ftype.t, NULL_TREE, yyvsp[-1].itype); 
                  check_for_new_type ("new", yyvsp[0].ftype); ;
     break;}
 case 208:
-#line 1149 "parse.y"
+#line 1147 "parse.y"
 { yyval.ttype = build_new (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype, yyvsp[-2].itype); 
                  check_for_new_type ("new", yyvsp[-1].ftype); ;
     break;}
 case 209:
-#line 1152 "parse.y"
+#line 1150 "parse.y"
 { yyval.ttype = build_new (yyvsp[-1].ttype, yyvsp[0].ftype.t, NULL_TREE, yyvsp[-2].itype); 
                  check_for_new_type ("new", yyvsp[0].ftype); ;
     break;}
 case 210:
-#line 1155 "parse.y"
+#line 1153 "parse.y"
 { yyval.ttype = build_new (yyvsp[-2].ttype, yyvsp[-1].ftype.t, yyvsp[0].ttype, yyvsp[-3].itype); 
                  check_for_new_type ("new", yyvsp[-1].ftype); ;
     break;}
 case 211:
-#line 1158 "parse.y"
+#line 1156 "parse.y"
 { yyval.ttype = build_new (NULL_TREE, groktypename(yyvsp[-1].ftype.t),
                                  NULL_TREE, yyvsp[-3].itype); 
                  check_for_new_type ("new", yyvsp[-1].ftype); ;
     break;}
 case 212:
-#line 1162 "parse.y"
+#line 1160 "parse.y"
 { yyval.ttype = build_new (NULL_TREE, groktypename(yyvsp[-2].ftype.t), yyvsp[0].ttype, yyvsp[-4].itype); 
                  check_for_new_type ("new", yyvsp[-2].ftype); ;
     break;}
 case 213:
-#line 1165 "parse.y"
+#line 1163 "parse.y"
 { yyval.ttype = build_new (yyvsp[-3].ttype, groktypename(yyvsp[-1].ftype.t), NULL_TREE, yyvsp[-4].itype); 
                  check_for_new_type ("new", yyvsp[-1].ftype); ;
     break;}
 case 214:
-#line 1168 "parse.y"
+#line 1166 "parse.y"
 { yyval.ttype = build_new (yyvsp[-4].ttype, groktypename(yyvsp[-2].ftype.t), yyvsp[0].ttype, yyvsp[-5].itype); 
                  check_for_new_type ("new", yyvsp[-2].ftype); ;
     break;}
 case 215:
-#line 1172 "parse.y"
+#line 1170 "parse.y"
 { yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 0, yyvsp[-1].itype); ;
     break;}
 case 216:
-#line 1174 "parse.y"
+#line 1172 "parse.y"
 { yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 1, yyvsp[-3].itype);
                  if (yychar == YYEMPTY)
                    yychar = YYLEX; ;
     break;}
 case 217:
-#line 1178 "parse.y"
+#line 1176 "parse.y"
 { yyval.ttype = delete_sanity (yyvsp[0].ttype, yyvsp[-2].ttype, 2, yyvsp[-4].itype);
                  if (yychar == YYEMPTY)
                    yychar = YYLEX; ;
     break;}
 case 218:
-#line 1182 "parse.y"
+#line 1180 "parse.y"
 { yyval.ttype = build_x_unary_op (REALPART_EXPR, yyvsp[0].ttype); ;
     break;}
 case 219:
-#line 1184 "parse.y"
+#line 1182 "parse.y"
 { yyval.ttype = build_x_unary_op (IMAGPART_EXPR, yyvsp[0].ttype); ;
     break;}
 case 220:
-#line 1189 "parse.y"
+#line 1187 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 221:
-#line 1191 "parse.y"
+#line 1189 "parse.y"
 {
                  yyval.ttype = yyvsp[-1].ttype; 
                  pedwarn ("old style placement syntax, use () instead");
                ;
     break;}
 case 222:
-#line 1199 "parse.y"
+#line 1197 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 223:
-#line 1201 "parse.y"
+#line 1199 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 224:
-#line 1203 "parse.y"
+#line 1201 "parse.y"
 {
                  cp_error ("`%T' is not a valid expression", yyvsp[-1].ftype.t);
                  yyval.ttype = error_mark_node;
                ;
     break;}
 case 225:
-#line 1211 "parse.y"
+#line 1209 "parse.y"
 {
                  if (pedantic)
                    pedwarn ("ANSI C++ forbids initialization of new expression with `='");
@@ -5006,25 +5004,25 @@ case 225:
                ;
     break;}
 case 226:
-#line 1221 "parse.y"
+#line 1219 "parse.y"
 { yyvsp[-1].ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, void_list_node);
                  TREE_PARMLIST (yyvsp[-1].ftype.t) = 1;
                  yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-1].ftype.t, NULL_TREE, NULL_TREE);
                  check_for_new_type ("cast", yyvsp[-1].ftype); ;
     break;}
 case 227:
-#line 1226 "parse.y"
+#line 1224 "parse.y"
 { yyvsp[-1].ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, void_list_node);
                  TREE_PARMLIST (yyvsp[-1].ftype.t) = 1;
                  yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-1].ftype.t, NULL_TREE, NULL_TREE);
                  check_for_new_type ("cast", yyvsp[-1].ftype); ;
     break;}
 case 229:
-#line 1235 "parse.y"
+#line 1233 "parse.y"
 { yyval.ttype = reparse_absdcl_as_casts (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 230:
-#line 1237 "parse.y"
+#line 1235 "parse.y"
 { 
                  tree init = build_nt (CONSTRUCTOR, NULL_TREE,
                                        nreverse (yyvsp[-2].ttype)); 
@@ -5037,157 +5035,157 @@ case 230:
                ;
     break;}
 case 232:
-#line 1253 "parse.y"
+#line 1251 "parse.y"
 { yyval.ttype = build_x_binary_op (MEMBER_REF, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 233:
-#line 1255 "parse.y"
+#line 1253 "parse.y"
 { yyval.ttype = build_m_component_ref (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 234:
-#line 1257 "parse.y"
+#line 1255 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 235:
-#line 1259 "parse.y"
+#line 1257 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 236:
-#line 1261 "parse.y"
+#line 1259 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 237:
-#line 1263 "parse.y"
+#line 1261 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 238:
-#line 1265 "parse.y"
+#line 1263 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 239:
-#line 1267 "parse.y"
+#line 1265 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 240:
-#line 1269 "parse.y"
+#line 1267 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 241:
-#line 1271 "parse.y"
+#line 1269 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 242:
-#line 1273 "parse.y"
+#line 1271 "parse.y"
 { yyval.ttype = build_x_binary_op (LT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 243:
-#line 1275 "parse.y"
+#line 1273 "parse.y"
 { yyval.ttype = build_x_binary_op (GT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 244:
-#line 1277 "parse.y"
+#line 1275 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 245:
-#line 1279 "parse.y"
+#line 1277 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 246:
-#line 1281 "parse.y"
+#line 1279 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 247:
-#line 1283 "parse.y"
+#line 1281 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 248:
-#line 1285 "parse.y"
+#line 1283 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 249:
-#line 1287 "parse.y"
+#line 1285 "parse.y"
 { yyval.ttype = build_x_binary_op (TRUTH_ANDIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 250:
-#line 1289 "parse.y"
+#line 1287 "parse.y"
 { yyval.ttype = build_x_binary_op (TRUTH_ORIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 251:
-#line 1291 "parse.y"
+#line 1289 "parse.y"
 { yyval.ttype = build_x_conditional_expr (yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 252:
-#line 1293 "parse.y"
+#line 1291 "parse.y"
 { yyval.ttype = build_x_modify_expr (yyval.ttype, NOP_EXPR, yyvsp[0].ttype);
                  if (yyval.ttype != error_mark_node)
                     C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR); ;
     break;}
 case 253:
-#line 1297 "parse.y"
+#line 1295 "parse.y"
 { yyval.ttype = build_x_modify_expr (yyval.ttype, yyvsp[-1].code, yyvsp[0].ttype); ;
     break;}
 case 254:
-#line 1299 "parse.y"
+#line 1297 "parse.y"
 { yyval.ttype = build_throw (NULL_TREE); ;
     break;}
 case 255:
-#line 1301 "parse.y"
+#line 1299 "parse.y"
 { yyval.ttype = build_throw (yyvsp[0].ttype); ;
     break;}
 case 256:
-#line 1319 "parse.y"
+#line 1317 "parse.y"
 { yyval.ttype = build_parse_node (BIT_NOT_EXPR, yyvsp[0].ttype); ;
     break;}
 case 262:
-#line 1328 "parse.y"
+#line 1326 "parse.y"
 { yyval.ttype = do_identifier (yyvsp[-1].ttype, 1); ;
     break;}
 case 263:
-#line 1332 "parse.y"
+#line 1330 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
 case 264:
-#line 1334 "parse.y"
+#line 1332 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
 case 265:
-#line 1339 "parse.y"
+#line 1337 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 266:
-#line 1341 "parse.y"
+#line 1339 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 267:
-#line 1344 "parse.y"
+#line 1342 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 272:
-#line 1356 "parse.y"
+#line 1354 "parse.y"
 { yyval.ttype = build_parse_node (INDIRECT_REF, yyvsp[0].ttype); ;
     break;}
 case 273:
-#line 1358 "parse.y"
+#line 1356 "parse.y"
 { yyval.ttype = build_parse_node (ADDR_EXPR, yyvsp[0].ttype); ;
     break;}
 case 274:
-#line 1360 "parse.y"
+#line 1358 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 275:
-#line 1365 "parse.y"
+#line 1363 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 276:
-#line 1367 "parse.y"
+#line 1365 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 280:
-#line 1375 "parse.y"
+#line 1373 "parse.y"
 { yyval.ttype = finish_decl_parsing (yyvsp[-1].ttype); ;
     break;}
 case 281:
-#line 1380 "parse.y"
+#line 1378 "parse.y"
 {
                  if (TREE_CODE (yyval.ttype) == BIT_NOT_EXPR)
                    yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, TREE_OPERAND (yyval.ttype, 0));
@@ -5212,7 +5210,7 @@ case 281:
                ;
     break;}
 case 284:
-#line 1405 "parse.y"
+#line 1403 "parse.y"
 {
                  if (processing_template_decl)
                    push_obstacks (&permanent_obstack, &permanent_obstack);
@@ -5222,7 +5220,7 @@ case 284:
                ;
     break;}
 case 285:
-#line 1413 "parse.y"
+#line 1411 "parse.y"
 { char class;
                  yyval.ttype = yyvsp[-1].ttype;
                  class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype));
@@ -5232,7 +5230,7 @@ case 285:
                    C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK); ;
     break;}
 case 286:
-#line 1421 "parse.y"
+#line 1419 "parse.y"
 { char class;
                  yyval.ttype = reparse_decl_as_expr (NULL_TREE, yyvsp[-1].ttype);
                  class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype));
@@ -5242,11 +5240,11 @@ case 286:
                    C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK); ;
     break;}
 case 287:
-#line 1429 "parse.y"
+#line 1427 "parse.y"
 { yyval.ttype = error_mark_node; ;
     break;}
 case 288:
-#line 1431 "parse.y"
+#line 1429 "parse.y"
 { if (current_function_decl == 0)
                    {
                      error ("braced-group within expression allowed only inside a function");
@@ -5260,7 +5258,7 @@ case 288:
                ;
     break;}
 case 289:
-#line 1443 "parse.y"
+#line 1441 "parse.y"
 { tree rtl_exp;
                  if (pedantic)
                    pedwarn ("ANSI C++ forbids braced-groups within expressions");
@@ -5292,7 +5290,7 @@ case 289:
                ;
     break;}
 case 290:
-#line 1473 "parse.y"
+#line 1471 "parse.y"
 {
                   yyval.ttype = build_x_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype, current_class_ref); 
                   if (TREE_CODE (yyval.ttype) == CALL_EXPR
@@ -5301,7 +5299,7 @@ case 290:
                 ;
     break;}
 case 291:
-#line 1480 "parse.y"
+#line 1478 "parse.y"
 {
                  yyval.ttype = build_x_function_call (yyval.ttype, NULL_TREE, current_class_ref);
                  if (TREE_CODE (yyval.ttype) == CALL_EXPR
@@ -5310,11 +5308,11 @@ case 291:
                 ;
     break;}
 case 292:
-#line 1487 "parse.y"
+#line 1485 "parse.y"
 { yyval.ttype = grok_array_decl (yyval.ttype, yyvsp[-1].ttype); ;
     break;}
 case 293:
-#line 1489 "parse.y"
+#line 1487 "parse.y"
 { /* If we get an OFFSET_REF, turn it into what it really
                     means (e.g., a COMPONENT_REF).  This way if we've got,
                     say, a reference to a static member that's being operated
@@ -5325,13 +5323,13 @@ case 293:
                  yyval.ttype = build_x_unary_op (POSTINCREMENT_EXPR, yyval.ttype); ;
     break;}
 case 294:
-#line 1498 "parse.y"
+#line 1496 "parse.y"
 { if (TREE_CODE (yyval.ttype) == OFFSET_REF)
                    yyval.ttype = resolve_offset_ref (yyval.ttype);
                  yyval.ttype = build_x_unary_op (POSTDECREMENT_EXPR, yyval.ttype); ;
     break;}
 case 295:
-#line 1503 "parse.y"
+#line 1501 "parse.y"
 { if (current_class_ptr)
                    {
 #ifdef WARNING_ABOUT_CCD
@@ -5356,7 +5354,7 @@ case 295:
                ;
     break;}
 case 296:
-#line 1526 "parse.y"
+#line 1524 "parse.y"
 {
                  tree type = NULL_TREE;
                  tree id = yyval.ttype;
@@ -5402,45 +5400,45 @@ case 296:
                ;
     break;}
 case 298:
-#line 1571 "parse.y"
+#line 1569 "parse.y"
 { tree type = groktypename (yyvsp[-4].ftype.t);
                  check_for_new_type ("dynamic_cast", yyvsp[-4].ftype);
                  yyval.ttype = build_dynamic_cast (type, yyvsp[-1].ttype); ;
     break;}
 case 299:
-#line 1575 "parse.y"
+#line 1573 "parse.y"
 { tree type = groktypename (yyvsp[-4].ftype.t);
                  check_for_new_type ("static_cast", yyvsp[-4].ftype);
                  yyval.ttype = build_static_cast (type, yyvsp[-1].ttype); ;
     break;}
 case 300:
-#line 1579 "parse.y"
+#line 1577 "parse.y"
 { tree type = groktypename (yyvsp[-4].ftype.t);
                  check_for_new_type ("reinterpret_cast", yyvsp[-4].ftype);
                  yyval.ttype = build_reinterpret_cast (type, yyvsp[-1].ttype); ;
     break;}
 case 301:
-#line 1583 "parse.y"
+#line 1581 "parse.y"
 { tree type = groktypename (yyvsp[-4].ftype.t);
                  check_for_new_type ("const_cast", yyvsp[-4].ftype);
                  yyval.ttype = build_const_cast (type, yyvsp[-1].ttype); ;
     break;}
 case 302:
-#line 1587 "parse.y"
+#line 1585 "parse.y"
 { yyval.ttype = build_x_typeid (yyvsp[-1].ttype); ;
     break;}
 case 303:
-#line 1589 "parse.y"
+#line 1587 "parse.y"
 { tree type = groktypename (yyvsp[-1].ftype.t);
                  check_for_new_type ("typeid", yyvsp[-1].ftype);
                  yyval.ttype = get_typeid (TYPE_MAIN_VARIANT (type)); ;
     break;}
 case 304:
-#line 1593 "parse.y"
+#line 1591 "parse.y"
 { yyval.ttype = do_scoped_id (yyvsp[0].ttype, 1); ;
     break;}
 case 305:
-#line 1595 "parse.y"
+#line 1593 "parse.y"
 {
                  got_scope = NULL_TREE;
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
@@ -5450,18 +5448,18 @@ case 305:
                ;
     break;}
 case 306:
-#line 1603 "parse.y"
+#line 1601 "parse.y"
 { yyval.ttype = build_offset_ref (OP0 (yyval.ttype), OP1 (yyval.ttype)); ;
     break;}
 case 307:
-#line 1605 "parse.y"
+#line 1603 "parse.y"
 { if (processing_template_decl)
                    yyval.ttype = build_min_nt (CALL_EXPR, copy_to_permanent (yyvsp[-3].ttype), yyvsp[-1].ttype, NULL_TREE);
                  else
                    yyval.ttype = build_member_call (OP0 (yyval.ttype), OP1 (yyval.ttype), yyvsp[-1].ttype); ;
     break;}
 case 308:
-#line 1610 "parse.y"
+#line 1608 "parse.y"
 { if (processing_template_decl)
                    yyval.ttype = build_min_nt (CALL_EXPR, copy_to_permanent (yyvsp[-1].ttype), 
                                       NULL_TREE, NULL_TREE);
@@ -5469,38 +5467,38 @@ case 308:
                    yyval.ttype = build_member_call (OP0 (yyval.ttype), OP1 (yyval.ttype), NULL_TREE); ;
     break;}
 case 309:
-#line 1616 "parse.y"
+#line 1614 "parse.y"
 { 
                  yyval.ttype = build_x_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); 
                ;
     break;}
 case 310:
-#line 1620 "parse.y"
+#line 1618 "parse.y"
 {
                  yyval.ttype = build_method_call (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, 
                                          NULL_TREE, LOOKUP_NORMAL); 
                 ;
     break;}
 case 311:
-#line 1625 "parse.y"
+#line 1623 "parse.y"
 {
                  yyval.ttype = build_method_call (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE,
                                          NULL_TREE, LOOKUP_NORMAL); 
                 ;
     break;}
 case 312:
-#line 1630 "parse.y"
+#line 1628 "parse.y"
 { yyval.ttype = build_x_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); ;
     break;}
 case 313:
-#line 1632 "parse.y"
+#line 1630 "parse.y"
 { if (processing_template_decl)
                    yyval.ttype = build_min_nt (COMPONENT_REF, yyvsp[-1].ttype, copy_to_permanent (yyvsp[0].ttype));
                  else
                    yyval.ttype = build_object_ref (yyval.ttype, OP0 (yyvsp[0].ttype), OP1 (yyvsp[0].ttype)); ;
     break;}
 case 314:
-#line 1637 "parse.y"
+#line 1635 "parse.y"
 {
 #if 0
                  /* This is a future direction of this code, but because
@@ -5517,7 +5515,7 @@ case 314:
                ;
     break;}
 case 315:
-#line 1652 "parse.y"
+#line 1650 "parse.y"
 {
 #if 0
                  /* This is a future direction of this code, but because
@@ -5534,7 +5532,7 @@ case 315:
                ;
     break;}
 case 316:
-#line 1667 "parse.y"
+#line 1665 "parse.y"
 {
                  if (IS_SIGNATURE (OP0 (yyvsp[-3].ttype)))
                    {
@@ -5547,7 +5545,7 @@ case 316:
                ;
     break;}
 case 317:
-#line 1678 "parse.y"
+#line 1676 "parse.y"
 {
                  if (IS_SIGNATURE (OP0 (yyvsp[-1].ttype)))
                    {
@@ -5560,7 +5558,7 @@ case 317:
                ;
     break;}
 case 318:
-#line 1690 "parse.y"
+#line 1688 "parse.y"
 {
                  if (IDENTIFIER_GLOBAL_VALUE (yyvsp[-1].ttype)
                      && (TREE_CODE (TREE_TYPE (yyvsp[-3].ttype)) 
@@ -5570,7 +5568,7 @@ case 318:
                ;
     break;}
 case 319:
-#line 1698 "parse.y"
+#line 1696 "parse.y"
 {
                  if (yyvsp[-4].ttype != yyvsp[-1].ttype)
                    cp_error ("destructor specifier `%T::~%T()' must have matching names", yyvsp[-4].ttype, yyvsp[-1].ttype);
@@ -5581,41 +5579,41 @@ case 319:
                ;
     break;}
 case 320:
-#line 1707 "parse.y"
+#line 1705 "parse.y"
 {
                  yyval.ttype = error_mark_node;
                ;
     break;}
 case 321:
-#line 1752 "parse.y"
+#line 1750 "parse.y"
 { yyval.itype = 0; ;
     break;}
 case 322:
-#line 1754 "parse.y"
+#line 1752 "parse.y"
 { got_scope = NULL_TREE; yyval.itype = 1; ;
     break;}
 case 323:
-#line 1759 "parse.y"
+#line 1757 "parse.y"
 { yyval.itype = 0; ;
     break;}
 case 324:
-#line 1761 "parse.y"
+#line 1759 "parse.y"
 { got_scope = NULL_TREE; yyval.itype = 1; ;
     break;}
 case 325:
-#line 1766 "parse.y"
+#line 1764 "parse.y"
 { yyval.ttype = boolean_true_node; ;
     break;}
 case 326:
-#line 1768 "parse.y"
+#line 1766 "parse.y"
 { yyval.ttype = boolean_false_node; ;
     break;}
 case 328:
-#line 1775 "parse.y"
+#line 1773 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 329:
-#line 1780 "parse.y"
+#line 1778 "parse.y"
 {
                  if (! current_function_parms_stored)
                    store_parm_decls ();
@@ -5627,18 +5625,18 @@ case 329:
                ;
     break;}
 case 330:
-#line 1793 "parse.y"
+#line 1791 "parse.y"
 { got_object = TREE_TYPE (yyval.ttype); ;
     break;}
 case 331:
-#line 1795 "parse.y"
+#line 1793 "parse.y"
 {
                  yyval.ttype = build_x_arrow (yyval.ttype); 
                  got_object = TREE_TYPE (yyval.ttype);
                ;
     break;}
 case 332:
-#line 1803 "parse.y"
+#line 1801 "parse.y"
 {
                  resume_momentary (yyvsp[-1].itype);
                  if (yyvsp[-2].ftype.t && IS_AGGR_TYPE_CODE (TREE_CODE (yyvsp[-2].ftype.t)))
@@ -5646,138 +5644,138 @@ case 332:
                ;
     break;}
 case 333:
-#line 1809 "parse.y"
+#line 1807 "parse.y"
 {
                  resume_momentary (yyvsp[-1].itype);
                  note_list_got_semicolon (yyvsp[-2].ftype.t);
                ;
     break;}
 case 334:
-#line 1814 "parse.y"
+#line 1812 "parse.y"
 { resume_momentary (yyvsp[-1].itype); ;
     break;}
 case 335:
-#line 1816 "parse.y"
+#line 1814 "parse.y"
 {
                  shadow_tag (yyvsp[-1].ftype.t);
                  note_list_got_semicolon (yyvsp[-1].ftype.t);
                ;
     break;}
 case 336:
-#line 1821 "parse.y"
+#line 1819 "parse.y"
 { warning ("empty declaration"); ;
     break;}
 case 337:
-#line 1823 "parse.y"
+#line 1821 "parse.y"
 { pedantic = yyvsp[-1].itype; ;
     break;}
 case 340:
-#line 1837 "parse.y"
+#line 1835 "parse.y"
 { yyval.ttype = make_call_declarator (NULL_TREE, empty_parms (),
                                             NULL_TREE, NULL_TREE); ;
     break;}
 case 341:
-#line 1840 "parse.y"
+#line 1838 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), NULL_TREE,
                                             NULL_TREE); ;
     break;}
 case 342:
-#line 1847 "parse.y"
+#line 1845 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 343:
-#line 1850 "parse.y"
+#line 1848 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 344:
-#line 1853 "parse.y"
+#line 1851 "parse.y"
 { yyval.ftype.t = build_decl_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 345:
-#line 1856 "parse.y"
+#line 1854 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE);
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag;  ;
     break;}
 case 346:
-#line 1859 "parse.y"
+#line 1857 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
 case 349:
-#line 1875 "parse.y"
+#line 1873 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
 case 350:
-#line 1878 "parse.y"
+#line 1876 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 351:
-#line 1881 "parse.y"
+#line 1879 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-2].ftype.t, chainon (yyvsp[-1].ttype, yyvsp[0].ttype)); 
                  yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ;
     break;}
 case 352:
-#line 1884 "parse.y"
+#line 1882 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ttype)); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 353:
-#line 1887 "parse.y"
+#line 1885 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ttype)); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 354:
-#line 1890 "parse.y"
+#line 1888 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-2].ftype.t,
                                         chainon (yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyvsp[-3].ttype))); 
                  yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ;
     break;}
 case 355:
-#line 1897 "parse.y"
+#line 1895 "parse.y"
 { if (extra_warnings)
                    warning ("`%s' is not at beginning of declaration",
                             IDENTIFIER_POINTER (yyval.ttype));
                  yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
     break;}
 case 356:
-#line 1902 "parse.y"
+#line 1900 "parse.y"
 { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyval.ttype); ;
     break;}
 case 357:
-#line 1904 "parse.y"
+#line 1902 "parse.y"
 { if (extra_warnings)
                    warning ("`%s' is not at beginning of declaration",
                             IDENTIFIER_POINTER (yyvsp[0].ttype));
                  yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
     break;}
 case 358:
-#line 1909 "parse.y"
+#line 1907 "parse.y"
 { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 359:
-#line 1911 "parse.y"
+#line 1909 "parse.y"
 { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
     break;}
 case 360:
-#line 1921 "parse.y"
+#line 1919 "parse.y"
 { yyval.ttype = yyvsp[0].ftype.t; TREE_STATIC (yyval.ttype) = 1; ;
     break;}
 case 361:
-#line 1923 "parse.y"
+#line 1921 "parse.y"
 { yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ;
     break;}
 case 362:
-#line 1925 "parse.y"
+#line 1923 "parse.y"
 { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype);
                  TREE_STATIC (yyval.ttype) = 1; ;
     break;}
 case 363:
-#line 1928 "parse.y"
+#line 1926 "parse.y"
 { if (extra_warnings && TREE_STATIC (yyval.ttype))
                    warning ("`%s' is not at beginning of declaration",
                             IDENTIFIER_POINTER (yyvsp[0].ttype));
@@ -5785,61 +5783,61 @@ case 363:
                  TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
     break;}
 case 364:
-#line 1934 "parse.y"
+#line 1932 "parse.y"
 { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 365:
-#line 1936 "parse.y"
+#line 1934 "parse.y"
 { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
     break;}
 case 366:
-#line 1947 "parse.y"
+#line 1945 "parse.y"
 { yyval.ftype.t = get_decl_list (yyvsp[0].ftype.t); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
 case 367:
-#line 1950 "parse.y"
+#line 1948 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ftype.t); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
 case 368:
-#line 1953 "parse.y"
+#line 1951 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 369:
-#line 1956 "parse.y"
+#line 1954 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ftype.t)); 
                  yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ;
     break;}
 case 370:
-#line 1962 "parse.y"
+#line 1960 "parse.y"
 { yyval.ttype = build_decl_list (NULL_TREE, yyvsp[0].ftype.t); ;
     break;}
 case 371:
-#line 1964 "parse.y"
+#line 1962 "parse.y"
 { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype); ;
     break;}
 case 373:
-#line 1974 "parse.y"
+#line 1972 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
     break;}
 case 374:
-#line 1976 "parse.y"
+#line 1974 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
     break;}
 case 375:
-#line 1978 "parse.y"
+#line 1976 "parse.y"
 { yyval.ftype.t = TREE_TYPE (yyvsp[-1].ttype);
                  yyval.ftype.new_type_flag = 0; ;
     break;}
 case 376:
-#line 1981 "parse.y"
+#line 1979 "parse.y"
 { yyval.ftype.t = groktypename (yyvsp[-1].ftype.t);
                  yyval.ftype.new_type_flag = 0; ;
     break;}
 case 377:
-#line 1984 "parse.y"
+#line 1982 "parse.y"
 { tree type = TREE_TYPE (yyvsp[-1].ttype);
 
                   yyval.ftype.new_type_flag = 0;
@@ -5856,7 +5854,7 @@ case 377:
                ;
     break;}
 case 378:
-#line 1999 "parse.y"
+#line 1997 "parse.y"
 { tree type = groktypename (yyvsp[-1].ftype.t);
 
                   yyval.ftype.new_type_flag = 0;
@@ -5873,23 +5871,23 @@ case 378:
                ;
     break;}
 case 379:
-#line 2019 "parse.y"
+#line 2017 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
     break;}
 case 380:
-#line 2021 "parse.y"
+#line 2019 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
     break;}
 case 388:
-#line 2042 "parse.y"
+#line 2040 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 389:
-#line 2044 "parse.y"
+#line 2042 "parse.y"
 { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 390:
-#line 2049 "parse.y"
+#line 2047 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  if (current_declspecs
@@ -5907,12 +5905,12 @@ case 390:
                  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
     break;}
 case 391:
-#line 2066 "parse.y"
+#line 2064 "parse.y"
 { cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, LOOKUP_ONLYCONVERTING);
                  yyval.itype = yyvsp[-2].itype; ;
     break;}
 case 392:
-#line 2069 "parse.y"
+#line 2067 "parse.y"
 { tree d;
                  split_specs_attrs (yyvsp[-3].ttype, &current_declspecs,
                                     &prefix_attributes);
@@ -5932,22 +5930,22 @@ case 392:
                  cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
     break;}
 case 393:
-#line 2090 "parse.y"
+#line 2088 "parse.y"
 { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1);
                  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
     break;}
 case 394:
-#line 2094 "parse.y"
+#line 2092 "parse.y"
 { cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, LOOKUP_ONLYCONVERTING); ;
     break;}
 case 395:
-#line 2096 "parse.y"
+#line 2094 "parse.y"
 { yyval.ttype = start_decl (yyvsp[-2].ttype, current_declspecs, 0);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes);
                  cp_finish_decl (yyval.ttype, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
     break;}
 case 396:
-#line 2103 "parse.y"
+#line 2101 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[0].itype = suspend_momentary ();
@@ -5955,12 +5953,12 @@ case 396:
                  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
     break;}
 case 397:
-#line 2110 "parse.y"
+#line 2108 "parse.y"
 { cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, LOOKUP_ONLYCONVERTING);
                  yyval.itype = yyvsp[-2].itype; ;
     break;}
 case 398:
-#line 2113 "parse.y"
+#line 2111 "parse.y"
 { tree d;
                  split_specs_attrs (yyvsp[-3].ttype, &current_declspecs,
                                     &prefix_attributes);
@@ -5970,7 +5968,7 @@ case 398:
                  cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
     break;}
 case 399:
-#line 2124 "parse.y"
+#line 2122 "parse.y"
 { current_declspecs = NULL_TREE;
                  prefix_attributes = NULL_TREE;
                  yyvsp[0].itype = suspend_momentary ();
@@ -5978,12 +5976,12 @@ case 399:
                  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
     break;}
 case 400:
-#line 2131 "parse.y"
+#line 2129 "parse.y"
 { cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, LOOKUP_ONLYCONVERTING);
                  yyval.itype = yyvsp[-2].itype; ;
     break;}
 case 401:
-#line 2134 "parse.y"
+#line 2132 "parse.y"
 { tree d;
                  current_declspecs = NULL_TREE;
                  prefix_attributes = NULL_TREE;
@@ -5993,120 +5991,120 @@ case 401:
                  cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
     break;}
 case 402:
-#line 2147 "parse.y"
+#line 2145 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 403:
-#line 2149 "parse.y"
+#line 2147 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 404:
-#line 2154 "parse.y"
+#line 2152 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 405:
-#line 2156 "parse.y"
+#line 2154 "parse.y"
 { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 406:
-#line 2161 "parse.y"
+#line 2159 "parse.y"
 { yyval.ttype = yyvsp[-2].ttype; ;
     break;}
 case 407:
-#line 2166 "parse.y"
+#line 2164 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 408:
-#line 2168 "parse.y"
+#line 2166 "parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 409:
-#line 2173 "parse.y"
+#line 2171 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 410:
-#line 2175 "parse.y"
+#line 2173 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 411:
-#line 2177 "parse.y"
+#line 2175 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
     break;}
 case 412:
-#line 2179 "parse.y"
+#line 2177 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
     break;}
 case 413:
-#line 2181 "parse.y"
+#line 2179 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 418:
-#line 2197 "parse.y"
+#line 2195 "parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 419:
-#line 2199 "parse.y"
+#line 2197 "parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 420:
-#line 2204 "parse.y"
+#line 2202 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 421:
-#line 2206 "parse.y"
+#line 2204 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 423:
-#line 2214 "parse.y"
+#line 2212 "parse.y"
 { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE);
                  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
     break;}
 case 424:
-#line 2217 "parse.y"
+#line 2215 "parse.y"
 { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype));
                  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
     break;}
 case 425:
-#line 2220 "parse.y"
+#line 2218 "parse.y"
 { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype));
                  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
     break;}
 case 426:
-#line 2223 "parse.y"
+#line 2221 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 427:
-#line 2230 "parse.y"
+#line 2228 "parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
     break;}
 case 428:
-#line 2232 "parse.y"
+#line 2230 "parse.y"
 { yyval.ttype = expr_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
     break;}
 case 429:
-#line 2235 "parse.y"
+#line 2233 "parse.y"
 { yyval.ttype = build_expr_list (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 430:
-#line 2237 "parse.y"
+#line 2235 "parse.y"
 { yyval.ttype = expr_tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
     break;}
 case 431:
-#line 2239 "parse.y"
+#line 2237 "parse.y"
 { yyval.ttype = build_expr_list (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 432:
-#line 2241 "parse.y"
+#line 2239 "parse.y"
 { yyval.ttype = expr_tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
     break;}
 case 433:
-#line 2246 "parse.y"
+#line 2244 "parse.y"
 { start_function (NULL_TREE, TREE_VALUE (yyvsp[0].ttype),
                                  NULL_TREE, 1);
                  reinit_parse_for_function (); ;
     break;}
 case 434:
-#line 2252 "parse.y"
+#line 2250 "parse.y"
 {
                  int nested = (hack_decl_function_context
                                (current_function_decl) != NULL_TREE);
@@ -6115,82 +6113,82 @@ case 434:
                ;
     break;}
 case 435:
-#line 2259 "parse.y"
+#line 2257 "parse.y"
 { process_next_inline (yyvsp[-2].ttype); ;
     break;}
 case 436:
-#line 2261 "parse.y"
+#line 2259 "parse.y"
 { process_next_inline (yyvsp[-2].ttype); ;
     break;}
 case 439:
-#line 2273 "parse.y"
+#line 2271 "parse.y"
 { replace_defarg (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
 case 440:
-#line 2275 "parse.y"
+#line 2273 "parse.y"
 { replace_defarg (yyvsp[-2].ttype, error_mark_node); ;
     break;}
 case 442:
-#line 2280 "parse.y"
+#line 2278 "parse.y"
 { do_pending_defargs (); ;
     break;}
 case 443:
-#line 2282 "parse.y"
+#line 2280 "parse.y"
 { do_pending_defargs (); ;
     break;}
 case 444:
-#line 2287 "parse.y"
+#line 2285 "parse.y"
 { yyvsp[0].itype = suspend_momentary ();
                  yyval.ttype = start_enum (yyvsp[-1].ttype); ;
     break;}
 case 445:
-#line 2290 "parse.y"
+#line 2288 "parse.y"
 { yyval.ftype.t = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
                  yyval.ftype.new_type_flag = 1;
                  resume_momentary ((int) yyvsp[-4].itype);
                  check_for_missing_semicolon (yyvsp[-3].ttype); ;
     break;}
 case 446:
-#line 2295 "parse.y"
+#line 2293 "parse.y"
 { yyval.ftype.t = finish_enum (start_enum (yyvsp[-2].ttype), NULL_TREE);
                  yyval.ftype.new_type_flag = 1;
                  check_for_missing_semicolon (yyval.ftype.t); ;
     break;}
 case 447:
-#line 2299 "parse.y"
+#line 2297 "parse.y"
 { yyvsp[0].itype = suspend_momentary ();
                  yyval.ttype = start_enum (make_anon_name ()); ;
     break;}
 case 448:
-#line 2302 "parse.y"
+#line 2300 "parse.y"
 { yyval.ftype.t = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
                  resume_momentary ((int) yyvsp[-5].itype);
                  check_for_missing_semicolon (yyvsp[-3].ttype);
                  yyval.ftype.new_type_flag = 1; ;
     break;}
 case 449:
-#line 2307 "parse.y"
+#line 2305 "parse.y"
 { yyval.ftype.t = finish_enum (start_enum (make_anon_name()), NULL_TREE);
                  yyval.ftype.new_type_flag = 1;
                  check_for_missing_semicolon (yyval.ftype.t); ;
     break;}
 case 450:
-#line 2311 "parse.y"
+#line 2309 "parse.y"
 { yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE, 1); 
                  yyval.ftype.new_type_flag = 0; ;
     break;}
 case 451:
-#line 2314 "parse.y"
+#line 2312 "parse.y"
 { yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE, 1); 
                  yyval.ftype.new_type_flag = 0; ;
     break;}
 case 452:
-#line 2317 "parse.y"
+#line 2315 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype;
                  yyval.ftype.new_type_flag = 0; ;
     break;}
 case 453:
-#line 2322 "parse.y"
+#line 2320 "parse.y"
 {
                  int semi;
 
@@ -6225,7 +6223,7 @@ case 453:
                ;
     break;}
 case 454:
-#line 2355 "parse.y"
+#line 2353 "parse.y"
 {
                  if (pending_inlines 
                      && current_scope () == current_function_decl)
@@ -6233,7 +6231,7 @@ case 454:
                ;
     break;}
 case 455:
-#line 2361 "parse.y"
+#line 2359 "parse.y"
 { 
                  yyval.ftype.t = yyvsp[-3].ttype;
                  yyval.ftype.new_type_flag = 1; 
@@ -6245,7 +6243,7 @@ case 455:
                ;
     break;}
 case 456:
-#line 2371 "parse.y"
+#line 2369 "parse.y"
 {
                  yyval.ftype.new_type_flag = 0;
                  if (TYPE_BINFO (yyvsp[0].ttype) == NULL_TREE)
@@ -6265,73 +6263,73 @@ case 456:
                ;
     break;}
 case 460:
-#line 2398 "parse.y"
+#line 2396 "parse.y"
 { if (pedantic && !in_system_header)
                    pedwarn ("comma at end of enumerator list"); ;
     break;}
 case 462:
-#line 2405 "parse.y"
+#line 2403 "parse.y"
 { error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
     break;}
 case 463:
-#line 2407 "parse.y"
+#line 2405 "parse.y"
 { error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
     break;}
 case 464:
-#line 2409 "parse.y"
+#line 2407 "parse.y"
 { error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
     break;}
 case 465:
-#line 2411 "parse.y"
+#line 2409 "parse.y"
 { error ("no body nor ';' separates two class, struct or union declarations"); ;
     break;}
 case 466:
-#line 2416 "parse.y"
+#line 2414 "parse.y"
 { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 467:
-#line 2421 "parse.y"
+#line 2419 "parse.y"
 { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 468:
-#line 2426 "parse.y"
+#line 2424 "parse.y"
 {
                  current_aggr = yyvsp[-2].ttype;
                  yyval.ttype = handle_class_head (yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
 case 469:
-#line 2431 "parse.y"
+#line 2429 "parse.y"
 {
                  current_aggr = yyvsp[-3].ttype;
                  yyval.ttype = handle_class_head (yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
 case 470:
-#line 2436 "parse.y"
+#line 2434 "parse.y"
 {
                  current_aggr = yyvsp[-2].ttype;
                  yyval.ttype = handle_class_head (yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype);
                ;
     break;}
 case 471:
-#line 2441 "parse.y"
+#line 2439 "parse.y"
 { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 472:
-#line 2443 "parse.y"
+#line 2441 "parse.y"
 { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 473:
-#line 2448 "parse.y"
+#line 2446 "parse.y"
 { yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, NULL_TREE, 0); ;
     break;}
 case 474:
-#line 2453 "parse.y"
+#line 2451 "parse.y"
 { yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, NULL_TREE, 1); ;
     break;}
 case 475:
-#line 2456 "parse.y"
+#line 2454 "parse.y"
 { 
                  yyval.ttype = yyvsp[-1].ttype;
                  if (yyvsp[0].ttype)
@@ -6339,7 +6337,7 @@ case 475:
                ;
     break;}
 case 476:
-#line 2462 "parse.y"
+#line 2460 "parse.y"
 { 
                  yyval.ttype = TREE_TYPE (yyvsp[-1].ttype);
                  if (TREE_INT_CST_LOW (current_aggr) == union_type 
@@ -6367,28 +6365,28 @@ case 476:
                ;
     break;}
 case 477:
-#line 2491 "parse.y"
+#line 2489 "parse.y"
 { yyval.ttype = xref_tag (yyval.ttype, make_anon_name (), NULL_TREE, 0);
                  yyungetc ('{', 1); ;
     break;}
 case 480:
-#line 2502 "parse.y"
+#line 2500 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 481:
-#line 2504 "parse.y"
+#line 2502 "parse.y"
 { yyungetc(':', 1); yyval.ttype = NULL_TREE; ;
     break;}
 case 482:
-#line 2506 "parse.y"
+#line 2504 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 484:
-#line 2512 "parse.y"
+#line 2510 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 485:
-#line 2517 "parse.y"
+#line 2515 "parse.y"
 {
                  tree type = TREE_TYPE (yyvsp[0].ttype);
                  if (! is_aggr_type (type, 1))
@@ -6415,7 +6413,7 @@ case 485:
                ;
     break;}
 case 486:
-#line 2542 "parse.y"
+#line 2540 "parse.y"
 {
                  tree type = TREE_TYPE (yyvsp[0].ttype);
                  if (current_aggr == signature_type_node)
@@ -6444,11 +6442,11 @@ case 486:
                ;
     break;}
 case 487:
-#line 2572 "parse.y"
+#line 2570 "parse.y"
 { yyval.ttype = TYPE_MAIN_DECL (yyvsp[0].ttype); ;
     break;}
 case 489:
-#line 2575 "parse.y"
+#line 2573 "parse.y"
 {
                  if (current_aggr == signature_type_node)
                    {
@@ -6471,7 +6469,7 @@ case 489:
                ;
     break;}
 case 490:
-#line 2596 "parse.y"
+#line 2594 "parse.y"
 {
                  if (current_aggr == signature_type_node)
                    {
@@ -6494,13 +6492,13 @@ case 490:
                ;
     break;}
 case 492:
-#line 2621 "parse.y"
+#line 2619 "parse.y"
 { if (yyval.ttype != ridpointers[(int)RID_VIRTUAL])
                    sorry ("non-virtual access");
                  yyval.ttype = access_default_virtual_node; ;
     break;}
 case 493:
-#line 2625 "parse.y"
+#line 2623 "parse.y"
 { int err = 0;
                  if (yyvsp[-1].ttype == access_protected_node)
                    {
@@ -6528,7 +6526,7 @@ case 493:
                ;
     break;}
 case 494:
-#line 2651 "parse.y"
+#line 2649 "parse.y"
 { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL])
                    sorry ("non-virtual access");
                  if (yyval.ttype == access_public_node)
@@ -6537,7 +6535,7 @@ case 494:
                    yyval.ttype = access_private_virtual_node; ;
     break;}
 case 495:
-#line 2661 "parse.y"
+#line 2659 "parse.y"
 { tree t = yyvsp[-1].ttype;
                  push_obstacks_nochange ();
                  end_temporary_allocation ();
@@ -6625,17 +6623,17 @@ case 495:
                ;
     break;}
 case 496:
-#line 2750 "parse.y"
+#line 2748 "parse.y"
 {
                    yyval.ttype = build_self_reference ();
                ;
     break;}
 case 497:
-#line 2757 "parse.y"
+#line 2755 "parse.y"
 { if (yyval.ttype) yyval.ttype = build_tree_list (access_public_node, yyval.ttype); ;
     break;}
 case 498:
-#line 2759 "parse.y"
+#line 2757 "parse.y"
 {
                  if (current_aggr == signature_type_node)
                    yyval.ttype = build_tree_list (access_public_node, yyvsp[0].ttype);
@@ -6645,7 +6643,7 @@ case 498:
                ;
     break;}
 case 499:
-#line 2767 "parse.y"
+#line 2765 "parse.y"
 {
                  tree visspec = yyvsp[-2].ttype;
 
@@ -6658,19 +6656,19 @@ case 499:
                ;
     break;}
 case 500:
-#line 2778 "parse.y"
+#line 2776 "parse.y"
 {
                  if (current_aggr == signature_type_node)
                    error ("access specifier not allowed in signature");
                ;
     break;}
 case 501:
-#line 2788 "parse.y"
+#line 2786 "parse.y"
 { if (yyval.ttype == void_type_node) yyval.ttype = NULL_TREE; 
                ;
     break;}
 case 502:
-#line 2791 "parse.y"
+#line 2789 "parse.y"
 { /* In pushdecl, we created a reverse list of names
                     in this binding level.  Make sure that the chain
                     of what we're trying to add isn't the item itself
@@ -6685,91 +6683,91 @@ case 502:
                ;
     break;}
 case 503:
-#line 2807 "parse.y"
+#line 2805 "parse.y"
 { ;
     break;}
 case 504:
-#line 2809 "parse.y"
+#line 2807 "parse.y"
 { error ("missing ';' before right brace");
                  yyungetc ('}', 0); ;
     break;}
 case 505:
-#line 2814 "parse.y"
+#line 2812 "parse.y"
 { yyval.ttype = finish_method (yyval.ttype); ;
     break;}
 case 506:
-#line 2816 "parse.y"
+#line 2814 "parse.y"
 { yyval.ttype = finish_method (yyval.ttype); ;
     break;}
 case 507:
-#line 2818 "parse.y"
+#line 2816 "parse.y"
 { yyval.ttype = finish_method (yyval.ttype); ;
     break;}
 case 508:
-#line 2820 "parse.y"
+#line 2818 "parse.y"
 { yyval.ttype = finish_method (yyval.ttype); ;
     break;}
 case 509:
-#line 2822 "parse.y"
+#line 2820 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 510:
-#line 2824 "parse.y"
+#line 2822 "parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  pedantic = yyvsp[-1].itype; ;
     break;}
 case 511:
-#line 2833 "parse.y"
+#line 2831 "parse.y"
 { yyval.ttype = grok_x_components (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 512:
-#line 2835 "parse.y"
+#line 2833 "parse.y"
 { yyval.ttype = grok_x_components (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 513:
-#line 2837 "parse.y"
+#line 2835 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
     break;}
 case 514:
-#line 2840 "parse.y"
+#line 2838 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
     break;}
 case 515:
-#line 2843 "parse.y"
+#line 2841 "parse.y"
 { yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 516:
-#line 2845 "parse.y"
+#line 2843 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 517:
-#line 2856 "parse.y"
+#line 2854 "parse.y"
 { tree specs, attrs;
                  split_specs_attrs (yyvsp[-4].ttype, &specs, &attrs);
                  yyval.ttype = grokfield (yyvsp[-3].ttype, specs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, attrs)); ;
     break;}
 case 518:
-#line 2861 "parse.y"
+#line 2859 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
     break;}
 case 519:
-#line 2864 "parse.y"
+#line 2862 "parse.y"
 { yyval.ttype = do_class_using_decl (yyvsp[0].ttype); ;
     break;}
 case 520:
-#line 2866 "parse.y"
+#line 2864 "parse.y"
 { yyval.ttype = finish_member_template_decl (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 521:
-#line 2872 "parse.y"
+#line 2870 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 523:
-#line 2875 "parse.y"
+#line 2873 "parse.y"
 {
                  /* In this context, void_type_node encodes
                     friends.  They have been recorded elsewhere.  */
@@ -6780,11 +6778,11 @@ case 523:
                ;
     break;}
 case 524:
-#line 2887 "parse.y"
+#line 2885 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 526:
-#line 2890 "parse.y"
+#line 2888 "parse.y"
 {
                  /* In this context, void_type_node encodes
                     friends.  They have been recorded elsewhere.  */
@@ -6795,7 +6793,7 @@ case 526:
                ;
     break;}
 case 531:
-#line 2912 "parse.y"
+#line 2910 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
@@ -6803,7 +6801,7 @@ case 531:
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
 case 532:
-#line 2918 "parse.y"
+#line 2916 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
@@ -6811,7 +6809,7 @@ case 532:
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 533:
-#line 2927 "parse.y"
+#line 2925 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
@@ -6819,7 +6817,7 @@ case 533:
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
 case 534:
-#line 2933 "parse.y"
+#line 2931 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
@@ -6827,7 +6825,7 @@ case 534:
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
 case 535:
-#line 2939 "parse.y"
+#line 2937 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
@@ -6835,7 +6833,7 @@ case 535:
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 536:
-#line 2945 "parse.y"
+#line 2943 "parse.y"
 { split_specs_attrs (yyvsp[-3].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-3].ttype = current_declspecs;
@@ -6843,54 +6841,54 @@ case 536:
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 537:
-#line 2954 "parse.y"
+#line 2952 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
 case 538:
-#line 2957 "parse.y"
+#line 2955 "parse.y"
 { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 539:
-#line 2963 "parse.y"
+#line 2961 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
 case 540:
-#line 2966 "parse.y"
+#line 2964 "parse.y"
 { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 541:
-#line 2969 "parse.y"
+#line 2967 "parse.y"
 { yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 543:
-#line 2980 "parse.y"
+#line 2978 "parse.y"
 { TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 544:
-#line 2985 "parse.y"
+#line 2983 "parse.y"
 { yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE); ;
     break;}
 case 545:
-#line 2987 "parse.y"
+#line 2985 "parse.y"
 { yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 546:
-#line 2993 "parse.y"
+#line 2991 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 547:
-#line 2996 "parse.y"
+#line 2994 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
 case 548:
-#line 3001 "parse.y"
+#line 2999 "parse.y"
 {
                  if (pedantic)
                    pedwarn ("ANSI C++ forbids array dimensions with parenthesized type in new");
@@ -6900,78 +6898,75 @@ case 548:
                ;
     break;}
 case 549:
-#line 3012 "parse.y"
+#line 3010 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 550:
-#line 3014 "parse.y"
+#line 3012 "parse.y"
 { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
     break;}
 case 551:
-#line 3019 "parse.y"
+#line 3017 "parse.y"
 { yyval.ftype.t = IDENTIFIER_AS_LIST (yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = 0; ;
     break;}
 case 552:
-#line 3022 "parse.y"
+#line 3020 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 553:
-#line 3031 "parse.y"
+#line 3029 "parse.y"
 { yyval.itype = suspend_momentary (); ;
     break;}
 case 554:
-#line 3036 "parse.y"
+#line 3034 "parse.y"
 { resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 555:
-#line 3042 "parse.y"
+#line 3040 "parse.y"
 { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 556:
-#line 3044 "parse.y"
+#line 3042 "parse.y"
 { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 557:
-#line 3046 "parse.y"
+#line 3044 "parse.y"
 { resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = empty_parms (); ;
     break;}
 case 558:
-#line 3048 "parse.y"
+#line 3046 "parse.y"
 { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = NULL_TREE; ;
     break;}
 case 559:
-#line 3055 "parse.y"
+#line 3053 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 560:
-#line 3057 "parse.y"
+#line 3055 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 561:
-#line 3059 "parse.y"
+#line 3057 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 562:
-#line 3061 "parse.y"
+#line 3059 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 563:
-#line 3063 "parse.y"
+#line 3061 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
 case 565:
-#line 3071 "parse.y"
+#line 3069 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    {
-                     arg_looking_for_template = processing_template_arg;
                      yyval.ttype = lookup_name (yyvsp[0].ttype, 1);
-                     arg_looking_for_template = 0;
-
                      if (current_class_type
                          && TYPE_BEING_DEFINED (current_class_type)
                          && ! IDENTIFIER_CLASS_VALUE (yyvsp[0].ttype))
@@ -6986,7 +6981,7 @@ case 565:
                ;
     break;}
 case 566:
-#line 3091 "parse.y"
+#line 3086 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
@@ -6996,97 +6991,97 @@ case 566:
                ;
     break;}
 case 569:
-#line 3104 "parse.y"
+#line 3099 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 570:
-#line 3109 "parse.y"
+#line 3104 "parse.y"
 { yyval.ttype = get_type_decl (yyvsp[0].ttype); ;
     break;}
 case 571:
-#line 3114 "parse.y"
+#line 3109 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 572:
-#line 3116 "parse.y"
+#line 3111 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
 case 573:
-#line 3118 "parse.y"
+#line 3113 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
     break;}
 case 574:
-#line 3120 "parse.y"
+#line 3115 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 575:
-#line 3122 "parse.y"
+#line 3117 "parse.y"
 { push_nested_class (yyvsp[-1].ttype, 3);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype);
                  TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ;
     break;}
 case 577:
-#line 3133 "parse.y"
+#line 3128 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 578:
-#line 3135 "parse.y"
+#line 3130 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 579:
-#line 3137 "parse.y"
+#line 3132 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 580:
-#line 3139 "parse.y"
+#line 3134 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 581:
-#line 3141 "parse.y"
+#line 3136 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
 case 583:
-#line 3149 "parse.y"
+#line 3144 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 584:
-#line 3151 "parse.y"
+#line 3146 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 585:
-#line 3153 "parse.y"
+#line 3148 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 586:
-#line 3155 "parse.y"
+#line 3150 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 587:
-#line 3157 "parse.y"
+#line 3152 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
 case 589:
-#line 3165 "parse.y"
+#line 3160 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 590:
-#line 3167 "parse.y"
+#line 3162 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 591:
-#line 3169 "parse.y"
+#line 3164 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
 case 592:
-#line 3171 "parse.y"
+#line 3166 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
     break;}
 case 593:
-#line 3173 "parse.y"
+#line 3168 "parse.y"
 { if (OP0 (yyval.ttype) != current_class_type)
                    {
                      push_nested_class (OP0 (yyval.ttype), 3);
@@ -7095,7 +7090,7 @@ case 593:
                ;
     break;}
 case 594:
-#line 3180 "parse.y"
+#line 3175 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype);
                  if (yyvsp[-1].ttype != current_class_type)
@@ -7106,47 +7101,47 @@ case 594:
                ;
     break;}
 case 595:
-#line 3192 "parse.y"
+#line 3187 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 596:
-#line 3195 "parse.y"
+#line 3190 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 597:
-#line 3201 "parse.y"
+#line 3196 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 598:
-#line 3204 "parse.y"
+#line 3199 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 600:
-#line 3211 "parse.y"
+#line 3206 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 601:
-#line 3216 "parse.y"
+#line 3211 "parse.y"
 { yyval.ttype = build_functional_cast (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ;
     break;}
 case 602:
-#line 3218 "parse.y"
+#line 3213 "parse.y"
 { yyval.ttype = reparse_decl_as_expr (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ;
     break;}
 case 603:
-#line 3220 "parse.y"
+#line 3215 "parse.y"
 { yyval.ttype = reparse_absdcl_as_expr (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 608:
-#line 3232 "parse.y"
+#line 3227 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 609:
-#line 3239 "parse.y"
+#line 3234 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE)
                    {
@@ -7162,7 +7157,7 @@ case 609:
                ;
     break;}
 case 610:
-#line 3253 "parse.y"
+#line 3248 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
@@ -7170,7 +7165,7 @@ case 610:
                ;
     break;}
 case 611:
-#line 3259 "parse.y"
+#line 3254 "parse.y"
 {
                  if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
@@ -7178,15 +7173,15 @@ case 611:
                ;
     break;}
 case 612:
-#line 3265 "parse.y"
+#line 3260 "parse.y"
 { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyvsp[-1].ttype)); ;
     break;}
 case 614:
-#line 3281 "parse.y"
+#line 3276 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 615:
-#line 3286 "parse.y"
+#line 3281 "parse.y"
 {
                  if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't')
                    yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype);
@@ -7201,14 +7196,14 @@ case 615:
                ;
     break;}
 case 616:
-#line 3302 "parse.y"
+#line 3297 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    cp_error ("`%T' is not a class or namespace", yyvsp[0].ttype);
                ;
     break;}
 case 617:
-#line 3307 "parse.y"
+#line 3302 "parse.y"
 {
                  if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't')
                    yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype);
@@ -7223,7 +7218,7 @@ case 617:
                ;
     break;}
 case 618:
-#line 3323 "parse.y"
+#line 3318 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE)
                    yyvsp[-1].ttype = lastiddecl;
@@ -7235,7 +7230,7 @@ case 618:
                ;
     break;}
 case 619:
-#line 3333 "parse.y"
+#line 3328 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
@@ -7243,11 +7238,11 @@ case 619:
                ;
     break;}
 case 620:
-#line 3339 "parse.y"
+#line 3334 "parse.y"
 { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); ;
     break;}
 case 623:
-#line 3343 "parse.y"
+#line 3338 "parse.y"
 {
                  if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
@@ -7255,7 +7250,7 @@ case 623:
                ;
     break;}
 case 624:
-#line 3352 "parse.y"
+#line 3347 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
@@ -7265,156 +7260,156 @@ case 624:
                ;
     break;}
 case 626:
-#line 3361 "parse.y"
+#line 3356 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 627:
-#line 3366 "parse.y"
+#line 3361 "parse.y"
 { got_scope = NULL_TREE; ;
     break;}
 case 628:
-#line 3368 "parse.y"
+#line 3363 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ;
     break;}
 case 629:
-#line 3375 "parse.y"
+#line 3370 "parse.y"
 { got_scope = void_type_node; ;
     break;}
 case 630:
-#line 3381 "parse.y"
+#line 3376 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 631:
-#line 3383 "parse.y"
+#line 3378 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 632:
-#line 3385 "parse.y"
+#line 3380 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 633:
-#line 3387 "parse.y"
+#line 3382 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 634:
-#line 3389 "parse.y"
+#line 3384 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
                ;
     break;}
 case 635:
-#line 3393 "parse.y"
+#line 3388 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
 case 637:
-#line 3402 "parse.y"
+#line 3397 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 638:
-#line 3404 "parse.y"
+#line 3399 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
 case 639:
-#line 3410 "parse.y"
+#line 3405 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 640:
-#line 3412 "parse.y"
+#line 3407 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 641:
-#line 3414 "parse.y"
+#line 3409 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[0].ftype.t, NULL_TREE); ;
     break;}
 case 642:
-#line 3416 "parse.y"
+#line 3411 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ;
     break;}
 case 643:
-#line 3418 "parse.y"
+#line 3413 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 644:
-#line 3420 "parse.y"
+#line 3415 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 645:
-#line 3422 "parse.y"
+#line 3417 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[0].ftype.t, NULL_TREE); ;
     break;}
 case 646:
-#line 3424 "parse.y"
+#line 3419 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ;
     break;}
 case 647:
-#line 3426 "parse.y"
+#line 3421 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
                ;
     break;}
 case 648:
-#line 3430 "parse.y"
+#line 3425 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
 case 650:
-#line 3439 "parse.y"
+#line 3434 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 652:
-#line 3443 "parse.y"
+#line 3438 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 653:
-#line 3445 "parse.y"
+#line 3440 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 654:
-#line 3447 "parse.y"
+#line 3442 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
 case 655:
-#line 3449 "parse.y"
+#line 3444 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
     break;}
 case 656:
-#line 3451 "parse.y"
+#line 3446 "parse.y"
 { yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 657:
-#line 3453 "parse.y"
+#line 3448 "parse.y"
 { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 658:
-#line 3455 "parse.y"
+#line 3450 "parse.y"
 { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 659:
-#line 3457 "parse.y"
+#line 3452 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 660:
-#line 3459 "parse.y"
+#line 3454 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ;
     break;}
 case 666:
-#line 3483 "parse.y"
+#line 3478 "parse.y"
 { do_pushlevel (); ;
     break;}
 case 667:
-#line 3488 "parse.y"
+#line 3483 "parse.y"
 { yyval.ttype = do_poplevel (); ;
     break;}
 case 669:
-#line 3496 "parse.y"
+#line 3491 "parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C++ forbids label declarations"); ;
     break;}
 case 672:
-#line 3507 "parse.y"
+#line 3502 "parse.y"
 { tree link;
                  for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
                    {
@@ -7425,11 +7420,11 @@ case 672:
                ;
     break;}
 case 673:
-#line 3521 "parse.y"
+#line 3516 "parse.y"
 {;
     break;}
 case 675:
-#line 3527 "parse.y"
+#line 3522 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7439,7 +7434,7 @@ case 675:
                ;
     break;}
 case 676:
-#line 3535 "parse.y"
+#line 3530 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7451,7 +7446,7 @@ case 676:
                ;
     break;}
 case 677:
-#line 3548 "parse.y"
+#line 3543 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7463,7 +7458,7 @@ case 677:
                ;
     break;}
 case 678:
-#line 3558 "parse.y"
+#line 3553 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7484,7 +7479,7 @@ case 678:
                ;
     break;}
 case 679:
-#line 3577 "parse.y"
+#line 3572 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7495,11 +7490,11 @@ case 679:
                ;
     break;}
 case 680:
-#line 3589 "parse.y"
+#line 3584 "parse.y"
 { finish_stmt (); ;
     break;}
 case 681:
-#line 3591 "parse.y"
+#line 3586 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7509,7 +7504,7 @@ case 681:
                ;
     break;}
 case 682:
-#line 3599 "parse.y"
+#line 3594 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7521,15 +7516,15 @@ case 682:
                ;
     break;}
 case 683:
-#line 3612 "parse.y"
+#line 3607 "parse.y"
 { finish_stmt (); ;
     break;}
 case 685:
-#line 3618 "parse.y"
+#line 3613 "parse.y"
 { finish_stmt (); ;
     break;}
 case 686:
-#line 3620 "parse.y"
+#line 3615 "parse.y"
 {
                  tree expr = yyvsp[-1].ttype;
                  if (! processing_template_decl)
@@ -7547,11 +7542,11 @@ case 686:
                  finish_stmt (); ;
     break;}
 case 687:
-#line 3636 "parse.y"
+#line 3631 "parse.y"
 { if (! processing_template_decl) expand_start_else (); ;
     break;}
 case 688:
-#line 3638 "parse.y"
+#line 3633 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7564,17 +7559,17 @@ case 688:
                ;
     break;}
 case 689:
-#line 3649 "parse.y"
+#line 3644 "parse.y"
 { finish_stmt (); ;
     break;}
 case 690:
-#line 3651 "parse.y"
+#line 3646 "parse.y"
 { if (! processing_template_decl) expand_end_cond ();
                  do_poplevel ();
                  finish_stmt (); ;
     break;}
 case 691:
-#line 3655 "parse.y"
+#line 3650 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7591,7 +7586,7 @@ case 691:
                ;
     break;}
 case 692:
-#line 3670 "parse.y"
+#line 3665 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7612,7 +7607,7 @@ case 692:
                ;
     break;}
 case 693:
-#line 3689 "parse.y"
+#line 3684 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7626,7 +7621,7 @@ case 693:
                ;
     break;}
 case 694:
-#line 3701 "parse.y"
+#line 3696 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7642,7 +7637,7 @@ case 694:
                ;
     break;}
 case 695:
-#line 3715 "parse.y"
+#line 3710 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7658,7 +7653,7 @@ case 695:
                ;
     break;}
 case 696:
-#line 3729 "parse.y"
+#line 3724 "parse.y"
 {
                  if (processing_template_decl)
                    TREE_OPERAND (yyvsp[-5].ttype, 1) = yyvsp[-1].ttype;
@@ -7673,7 +7668,7 @@ case 696:
                ;
     break;}
 case 697:
-#line 3742 "parse.y"
+#line 3737 "parse.y"
 { if (processing_template_decl)
                    {
                      yyval.ttype = build_min_nt (FOR_STMT, NULL_TREE, NULL_TREE, 
@@ -7694,7 +7689,7 @@ case 697:
                ;
     break;}
 case 698:
-#line 3761 "parse.y"
+#line 3756 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7714,7 +7709,7 @@ case 698:
                ;
     break;}
 case 699:
-#line 3779 "parse.y"
+#line 3774 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7735,7 +7730,7 @@ case 699:
                ;
     break;}
 case 700:
-#line 3800 "parse.y"
+#line 3795 "parse.y"
 {
                  if (processing_template_decl)
                    TREE_OPERAND (yyvsp[-9].ttype, 2) = yyvsp[-1].ttype;
@@ -7743,7 +7738,7 @@ case 700:
                ;
     break;}
 case 701:
-#line 3806 "parse.y"
+#line 3801 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7766,7 +7761,7 @@ case 701:
                  finish_stmt (); ;
     break;}
 case 702:
-#line 3827 "parse.y"
+#line 3822 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7785,7 +7780,7 @@ case 702:
                ;
     break;}
 case 703:
-#line 3844 "parse.y"
+#line 3839 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7800,23 +7795,23 @@ case 703:
                ;
     break;}
 case 704:
-#line 3857 "parse.y"
+#line 3852 "parse.y"
 { finish_stmt (); ;
     break;}
 case 705:
-#line 3859 "parse.y"
+#line 3854 "parse.y"
 { do_case (yyvsp[-1].ttype, NULL_TREE); ;
     break;}
 case 707:
-#line 3862 "parse.y"
+#line 3857 "parse.y"
 { do_case (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 709:
-#line 3865 "parse.y"
+#line 3860 "parse.y"
 { do_case (NULL_TREE, NULL_TREE); ;
     break;}
 case 711:
-#line 3868 "parse.y"
+#line 3863 "parse.y"
 { emit_line_note (input_filename, lineno);
                  if (processing_template_decl)
                    add_tree (build_min_nt (BREAK_STMT));
@@ -7824,7 +7819,7 @@ case 711:
                    error ("break statement not within loop or switch"); ;
     break;}
 case 712:
-#line 3874 "parse.y"
+#line 3869 "parse.y"
 { emit_line_note (input_filename, lineno);
                  if (processing_template_decl)
                    add_tree (build_min_nt (CONTINUE_STMT));
@@ -7832,19 +7827,19 @@ case 712:
                    error ("continue statement not within a loop"); ;
     break;}
 case 713:
-#line 3880 "parse.y"
+#line 3875 "parse.y"
 { emit_line_note (input_filename, lineno);
                  c_expand_return (NULL_TREE); ;
     break;}
 case 714:
-#line 3883 "parse.y"
+#line 3878 "parse.y"
 { emit_line_note (input_filename, lineno);
                  c_expand_return (yyvsp[-1].ttype);
                  finish_stmt ();
                ;
     break;}
 case 715:
-#line 3888 "parse.y"
+#line 3883 "parse.y"
 { if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
                  emit_line_note (input_filename, lineno);
                  expand_asm (yyvsp[-2].ttype);
@@ -7852,7 +7847,7 @@ case 715:
                ;
     break;}
 case 716:
-#line 3895 "parse.y"
+#line 3890 "parse.y"
 { if (TREE_CHAIN (yyvsp[-4].ttype)) yyvsp[-4].ttype = combine_strings (yyvsp[-4].ttype);
                  emit_line_note (input_filename, lineno);
                  c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
@@ -7862,7 +7857,7 @@ case 716:
                ;
     break;}
 case 717:
-#line 3904 "parse.y"
+#line 3899 "parse.y"
 { if (TREE_CHAIN (yyvsp[-6].ttype)) yyvsp[-6].ttype = combine_strings (yyvsp[-6].ttype);
                  emit_line_note (input_filename, lineno);
                  c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
@@ -7872,7 +7867,7 @@ case 717:
                ;
     break;}
 case 718:
-#line 3914 "parse.y"
+#line 3909 "parse.y"
 { if (TREE_CHAIN (yyvsp[-8].ttype)) yyvsp[-8].ttype = combine_strings (yyvsp[-8].ttype);
                  emit_line_note (input_filename, lineno);
                  c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
@@ -7882,7 +7877,7 @@ case 718:
                ;
     break;}
 case 719:
-#line 3922 "parse.y"
+#line 3917 "parse.y"
 {
                  if (processing_template_decl)
                    add_tree (build_min_nt (GOTO_STMT, yyvsp[-1].ttype));
@@ -7892,7 +7887,7 @@ case 719:
                ;
     break;}
 case 720:
-#line 3930 "parse.y"
+#line 3925 "parse.y"
 {
                  if (processing_template_decl)
                    add_tree (build_min_nt (GOTO_STMT, yyvsp[-1].ttype));
@@ -7907,21 +7902,21 @@ case 720:
                ;
     break;}
 case 721:
-#line 3943 "parse.y"
+#line 3938 "parse.y"
 { finish_stmt (); ;
     break;}
 case 722:
-#line 3945 "parse.y"
+#line 3940 "parse.y"
 { error ("label must be followed by statement");
                  yyungetc ('}', 0);
                  finish_stmt (); ;
     break;}
 case 723:
-#line 3949 "parse.y"
+#line 3944 "parse.y"
 { finish_stmt (); ;
     break;}
 case 725:
-#line 3955 "parse.y"
+#line 3950 "parse.y"
 {
                  if (! current_function_parms_stored)
                    store_parm_decls ();
@@ -7929,11 +7924,11 @@ case 725:
                ;
     break;}
 case 726:
-#line 3961 "parse.y"
+#line 3956 "parse.y"
 { expand_start_all_catch (); ;
     break;}
 case 727:
-#line 3963 "parse.y"
+#line 3958 "parse.y"
 {
                  int nested = (hack_decl_function_context
                                (current_function_decl) != NULL_TREE);
@@ -7942,7 +7937,7 @@ case 727:
                ;
     break;}
 case 728:
-#line 3973 "parse.y"
+#line 3968 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7958,7 +7953,7 @@ case 728:
                ;
     break;}
 case 729:
-#line 3987 "parse.y"
+#line 3982 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7971,7 +7966,7 @@ case 729:
                ;
     break;}
 case 730:
-#line 3998 "parse.y"
+#line 3993 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7984,7 +7979,7 @@ case 730:
                ;
     break;}
 case 733:
-#line 4017 "parse.y"
+#line 4012 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7995,7 +7990,7 @@ case 733:
                ;
     break;}
 case 734:
-#line 4026 "parse.y"
+#line 4021 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -8006,7 +8001,7 @@ case 734:
                ;
     break;}
 case 735:
-#line 4035 "parse.y"
+#line 4030 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -8019,17 +8014,17 @@ case 735:
                ;
     break;}
 case 739:
-#line 4055 "parse.y"
+#line 4050 "parse.y"
 { expand_start_catch_block (NULL_TREE, NULL_TREE); ;
     break;}
 case 740:
-#line 4071 "parse.y"
+#line 4066 "parse.y"
 { check_for_new_type ("inside exception declarations", yyvsp[-1].ftype);
                  expand_start_catch_block (TREE_PURPOSE (yyvsp[-1].ftype.t),
                                            TREE_VALUE (yyvsp[-1].ftype.t)); ;
     break;}
 case 741:
-#line 4078 "parse.y"
+#line 4073 "parse.y"
 { tree label;
                do_label:
                  label = define_label (input_filename, lineno, yyvsp[-1].ttype);
@@ -8038,129 +8033,129 @@ case 741:
                ;
     break;}
 case 742:
-#line 4085 "parse.y"
+#line 4080 "parse.y"
 { goto do_label; ;
     break;}
 case 743:
-#line 4087 "parse.y"
+#line 4082 "parse.y"
 { goto do_label; ;
     break;}
 case 744:
-#line 4089 "parse.y"
+#line 4084 "parse.y"
 { goto do_label; ;
     break;}
 case 745:
-#line 4094 "parse.y"
+#line 4089 "parse.y"
 { if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ;
     break;}
 case 747:
-#line 4097 "parse.y"
+#line 4092 "parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C++ forbids compound statements inside for initializations");
                ;
     break;}
 case 748:
-#line 4106 "parse.y"
+#line 4101 "parse.y"
 { emit_line_note (input_filename, lineno);
                  yyval.ttype = NULL_TREE; ;
     break;}
 case 749:
-#line 4109 "parse.y"
+#line 4104 "parse.y"
 { emit_line_note (input_filename, lineno); ;
     break;}
 case 750:
-#line 4114 "parse.y"
+#line 4109 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 752:
-#line 4117 "parse.y"
+#line 4112 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 753:
-#line 4124 "parse.y"
+#line 4119 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 756:
-#line 4131 "parse.y"
+#line 4126 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 757:
-#line 4136 "parse.y"
+#line 4131 "parse.y"
 { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ;
     break;}
 case 758:
-#line 4141 "parse.y"
+#line 4136 "parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ;
     break;}
 case 759:
-#line 4143 "parse.y"
+#line 4138 "parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
     break;}
 case 760:
-#line 4154 "parse.y"
+#line 4149 "parse.y"
 {
                  yyval.ttype = empty_parms();
                ;
     break;}
 case 762:
-#line 4159 "parse.y"
+#line 4154 "parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ftype.t, void_list_node);
                  TREE_PARMLIST (yyval.ttype) = 1; 
                  check_for_new_type ("inside parameter list", yyvsp[0].ftype); ;
     break;}
 case 763:
-#line 4168 "parse.y"
+#line 4163 "parse.y"
 {
                  yyval.ttype = chainon (yyval.ttype, void_list_node);
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
 case 764:
-#line 4173 "parse.y"
+#line 4168 "parse.y"
 {
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
 case 765:
-#line 4178 "parse.y"
+#line 4173 "parse.y"
 {
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
 case 766:
-#line 4182 "parse.y"
+#line 4177 "parse.y"
 {
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); 
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
 case 767:
-#line 4187 "parse.y"
+#line 4182 "parse.y"
 {
                  yyval.ttype = NULL_TREE;
                ;
     break;}
 case 768:
-#line 4191 "parse.y"
+#line 4186 "parse.y"
 {
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
 case 769:
-#line 4195 "parse.y"
+#line 4190 "parse.y"
 {
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
 case 770:
-#line 4199 "parse.y"
+#line 4194 "parse.y"
 {
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t);
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
 case 771:
-#line 4204 "parse.y"
+#line 4199 "parse.y"
 {
                  /* This helps us recover from really nasty
                     parse errors, for example, a missing right
@@ -8173,7 +8168,7 @@ case 771:
                ;
     break;}
 case 772:
-#line 4215 "parse.y"
+#line 4210 "parse.y"
 {
                  /* This helps us recover from really nasty
                     parse errors, for example, a missing right
@@ -8186,98 +8181,98 @@ case 772:
                ;
     break;}
 case 773:
-#line 4230 "parse.y"
+#line 4225 "parse.y"
 { maybe_snarf_defarg (); ;
     break;}
 case 774:
-#line 4232 "parse.y"
+#line 4227 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 777:
-#line 4243 "parse.y"
+#line 4238 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[0].ftype);
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ;
     break;}
 case 778:
-#line 4246 "parse.y"
+#line 4241 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[-1].ftype);
                  yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); ;
     break;}
 case 779:
-#line 4249 "parse.y"
+#line 4244 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[0].ftype);
                  yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ;
     break;}
 case 780:
-#line 4252 "parse.y"
+#line 4247 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 781:
-#line 4254 "parse.y"
+#line 4249 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
     break;}
 case 783:
-#line 4260 "parse.y"
+#line 4255 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[-1].ftype);
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); ;
     break;}
 case 784:
-#line 4270 "parse.y"
+#line 4265 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ftype.t);
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag;
                  yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); ;
     break;}
 case 785:
-#line 4274 "parse.y"
+#line 4269 "parse.y"
 { yyval.ftype.t = build_tree_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 786:
-#line 4277 "parse.y"
+#line 4272 "parse.y"
 { yyval.ftype.t = build_tree_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 787:
-#line 4280 "parse.y"
+#line 4275 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ftype.t);
                  yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype);
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 788:
-#line 4284 "parse.y"
+#line 4279 "parse.y"
 { tree specs = strip_attrs (yyvsp[0].ftype.t);
                  yyval.ftype.t = build_tree_list (specs, NULL_TREE); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
 case 789:
-#line 4288 "parse.y"
+#line 4283 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ttype);
                  yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = 0; ;
     break;}
 case 790:
-#line 4295 "parse.y"
+#line 4290 "parse.y"
 { yyval.ftype.t = build_tree_list (NULL_TREE, yyvsp[0].ftype.t);
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag;  ;
     break;}
 case 791:
-#line 4298 "parse.y"
+#line 4293 "parse.y"
 { yyval.ftype.t = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t);
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag;  ;
     break;}
 case 794:
-#line 4309 "parse.y"
+#line 4304 "parse.y"
 { see_typename (); ;
     break;}
 case 795:
-#line 4314 "parse.y"
+#line 4309 "parse.y"
 {
                  error ("type specifier omitted for parameter");
                  yyval.ttype = build_tree_list (integer_type_node, NULL_TREE);
                ;
     break;}
 case 796:
-#line 4319 "parse.y"
+#line 4314 "parse.y"
 {
                  error ("type specifier omitted for parameter");
                  if (TREE_CODE (yyval.ttype) == SCOPE_REF
@@ -8288,188 +8283,188 @@ case 796:
                ;
     break;}
 case 797:
-#line 4331 "parse.y"
+#line 4326 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 798:
-#line 4333 "parse.y"
+#line 4328 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 799:
-#line 4335 "parse.y"
+#line 4330 "parse.y"
 { yyval.ttype = build_decl_list (NULL_TREE, NULL_TREE); ;
     break;}
 case 800:
-#line 4340 "parse.y"
+#line 4335 "parse.y"
 { yyval.ttype = build_decl_list (NULL_TREE, groktypename(yyvsp[0].ftype.t)); ;
     break;}
 case 802:
-#line 4346 "parse.y"
+#line 4341 "parse.y"
 {
                  TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype;
                  yyval.ttype = yyvsp[0].ttype;
                ;
     break;}
 case 803:
-#line 4354 "parse.y"
+#line 4349 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 804:
-#line 4356 "parse.y"
+#line 4351 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 805:
-#line 4358 "parse.y"
+#line 4353 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 806:
-#line 4360 "parse.y"
+#line 4355 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
 case 807:
-#line 4367 "parse.y"
+#line 4362 "parse.y"
 { got_scope = NULL_TREE; ;
     break;}
 case 808:
-#line 4372 "parse.y"
+#line 4367 "parse.y"
 { yyval.ttype = ansi_opname[MULT_EXPR]; ;
     break;}
 case 809:
-#line 4374 "parse.y"
+#line 4369 "parse.y"
 { yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ;
     break;}
 case 810:
-#line 4376 "parse.y"
+#line 4371 "parse.y"
 { yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ;
     break;}
 case 811:
-#line 4378 "parse.y"
+#line 4373 "parse.y"
 { yyval.ttype = ansi_opname[PLUS_EXPR]; ;
     break;}
 case 812:
-#line 4380 "parse.y"
+#line 4375 "parse.y"
 { yyval.ttype = ansi_opname[MINUS_EXPR]; ;
     break;}
 case 813:
-#line 4382 "parse.y"
+#line 4377 "parse.y"
 { yyval.ttype = ansi_opname[BIT_AND_EXPR]; ;
     break;}
 case 814:
-#line 4384 "parse.y"
+#line 4379 "parse.y"
 { yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ;
     break;}
 case 815:
-#line 4386 "parse.y"
+#line 4381 "parse.y"
 { yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ;
     break;}
 case 816:
-#line 4388 "parse.y"
+#line 4383 "parse.y"
 { yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ;
     break;}
 case 817:
-#line 4390 "parse.y"
+#line 4385 "parse.y"
 { yyval.ttype = ansi_opname[COMPOUND_EXPR]; ;
     break;}
 case 818:
-#line 4392 "parse.y"
+#line 4387 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
 case 819:
-#line 4394 "parse.y"
+#line 4389 "parse.y"
 { yyval.ttype = ansi_opname[LT_EXPR]; ;
     break;}
 case 820:
-#line 4396 "parse.y"
+#line 4391 "parse.y"
 { yyval.ttype = ansi_opname[GT_EXPR]; ;
     break;}
 case 821:
-#line 4398 "parse.y"
+#line 4393 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
 case 822:
-#line 4400 "parse.y"
+#line 4395 "parse.y"
 { yyval.ttype = ansi_assopname[yyvsp[0].code]; ;
     break;}
 case 823:
-#line 4402 "parse.y"
+#line 4397 "parse.y"
 { yyval.ttype = ansi_opname [MODIFY_EXPR]; ;
     break;}
 case 824:
-#line 4404 "parse.y"
+#line 4399 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
 case 825:
-#line 4406 "parse.y"
+#line 4401 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
 case 826:
-#line 4408 "parse.y"
+#line 4403 "parse.y"
 { yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ;
     break;}
 case 827:
-#line 4410 "parse.y"
+#line 4405 "parse.y"
 { yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ;
     break;}
 case 828:
-#line 4412 "parse.y"
+#line 4407 "parse.y"
 { yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ;
     break;}
 case 829:
-#line 4414 "parse.y"
+#line 4409 "parse.y"
 { yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ;
     break;}
 case 830:
-#line 4416 "parse.y"
+#line 4411 "parse.y"
 { yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ;
     break;}
 case 831:
-#line 4418 "parse.y"
+#line 4413 "parse.y"
 { yyval.ttype = ansi_opname[COND_EXPR]; ;
     break;}
 case 832:
-#line 4420 "parse.y"
+#line 4415 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
 case 833:
-#line 4422 "parse.y"
+#line 4417 "parse.y"
 { yyval.ttype = ansi_opname[COMPONENT_REF]; ;
     break;}
 case 834:
-#line 4424 "parse.y"
+#line 4419 "parse.y"
 { yyval.ttype = ansi_opname[MEMBER_REF]; ;
     break;}
 case 835:
-#line 4426 "parse.y"
+#line 4421 "parse.y"
 { yyval.ttype = ansi_opname[CALL_EXPR]; ;
     break;}
 case 836:
-#line 4428 "parse.y"
+#line 4423 "parse.y"
 { yyval.ttype = ansi_opname[ARRAY_REF]; ;
     break;}
 case 837:
-#line 4430 "parse.y"
+#line 4425 "parse.y"
 { yyval.ttype = ansi_opname[NEW_EXPR]; ;
     break;}
 case 838:
-#line 4432 "parse.y"
+#line 4427 "parse.y"
 { yyval.ttype = ansi_opname[DELETE_EXPR]; ;
     break;}
 case 839:
-#line 4434 "parse.y"
+#line 4429 "parse.y"
 { yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ;
     break;}
 case 840:
-#line 4436 "parse.y"
+#line 4431 "parse.y"
 { yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ;
     break;}
 case 841:
-#line 4439 "parse.y"
+#line 4434 "parse.y"
 { yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 842:
-#line 4441 "parse.y"
+#line 4436 "parse.y"
 { yyval.ttype = ansi_opname[ERROR_MARK]; ;
     break;}
 }
@@ -8670,7 +8665,7 @@ yyerrhandle:
   yystate = yyn;
   goto yynewstate;
 }
-#line 4444 "parse.y"
+#line 4439 "parse.y"
 
 
 #ifdef SPEW_DEBUG
index e9eebcc..ef68898 100644 (file)
@@ -512,19 +512,17 @@ template_parm:
                { $$ = build_tree_list ($3, $1.t); }
        | template_template_parm
                { $$ = build_tree_list (NULL_TREE, $1); }
-       | template_template_parm '=' PTYPENAME
-               {
-                 tree defarg;
-                 arg_looking_for_template = 1;
-                 defarg = lookup_name ($3, 0);
-                 arg_looking_for_template = 0;
-                       
-                 if (!defarg || defarg == error_mark_node
-                     || (TREE_CODE (defarg) != TEMPLATE_DECL
-                         && TREE_CODE (defarg) != TEMPLATE_TEMPLATE_PARM))
-                   defarg = do_identifier ($3, 1);
-                 $$ = build_tree_list (defarg, $1);
-               }
+       | template_template_parm '=' template_arg
+               {
+                 if (TREE_CODE ($3) != TEMPLATE_DECL
+                     && TREE_CODE ($3) != TEMPLATE_TEMPLATE_PARM
+                     && TREE_CODE ($3) != TYPE_DECL)
+                   {
+                     error ("invalid default template argument");
+                     $3 = error_mark_node;
+                   }
+                 $$ = build_tree_list ($3, $1);
+               }
        ;
 
 template_def:
@@ -3071,10 +3069,7 @@ nonnested_type:
                {
                  if (TREE_CODE ($1) == IDENTIFIER_NODE)
                    {
-                     arg_looking_for_template = processing_template_arg;
                      $$ = lookup_name ($1, 1);
-                     arg_looking_for_template = 0;
-
                      if (current_class_type
                          && TYPE_BEING_DEFINED (current_class_type)
                          && ! IDENTIFIER_CLASS_VALUE ($1))
index 597c75a..508719a 100644 (file)
@@ -1744,36 +1744,14 @@ coerce_template_parms (parms, arglist, in_decl,
       return error_mark_node;
     }
 
-  if (arglist && TREE_CODE (arglist) == TREE_VEC)
-    {
-      if (nargs == nparms)
-       vec = copy_node (arglist);
-      else
-       {
-         /* We arrive here when a template with some default arguments
-            is used as template template argument.  */
-         is_tmpl_parm = 1;
-         vec = make_tree_vec (nparms);
-         for (i = 0; i < nparms; i++)
-           {
-             tree arg;
-             
-             if (i < nargs)
-             arg = TREE_VEC_ELT (arglist, i);
-             else if (TREE_CODE (TREE_VALUE (TREE_VEC_ELT (parms, i)))
-                      == TYPE_DECL)
-               arg = tsubst (TREE_PURPOSE (TREE_VEC_ELT (parms, i)),
-                             vec, i, in_decl);
-             else
-               arg = tsubst_expr (TREE_PURPOSE (TREE_VEC_ELT (parms, i)),
-                                  vec, i, in_decl);
-             
-             TREE_VEC_ELT (vec, i) = arg;
-           }
-       }
-    }
+  if (arglist && TREE_CODE (arglist) == TREE_VEC && nargs == nparms)
+    vec = copy_node (arglist);
   else
     {
+      /* We can arrive here with arglist being a TREE_VEC when a 
+        template with some default arguments is used as template 
+        template argument.  */
+      is_tmpl_parm = TREE_CODE (arglist) == TREE_VEC;
       vec = make_tree_vec (nparms);
 
       for (i = 0; i < nparms; i++)
@@ -1791,6 +1769,12 @@ coerce_template_parms (parms, arglist, in_decl,
              else
                arg = TREE_VALUE (arg);
            }
+         else if (is_tmpl_parm && i < nargs)
+           {
+             arg = TREE_VEC_ELT (arglist, i);
+             if (arg == error_mark_node)
+               lost++;
+           }
          else if (TREE_PURPOSE (parm) == NULL_TREE)
            {
              my_friendly_assert (!require_all_arguments, 0);
@@ -1846,20 +1830,29 @@ coerce_template_parms (parms, arglist, in_decl,
          arg = TREE_VALUE (arg);
        }
 
-      /* Check if it is a class template.  */
+      requires_tmpl_type = TREE_CODE (parm) == TEMPLATE_DECL;
+      requires_type = TREE_CODE (parm) == TYPE_DECL
+                     || requires_tmpl_type;
+
+      /* Check if it is a class template.  If REQUIRES_TMPL_TYPE is true,
+        we also accept implicitly created TYPE_DECL as a valid argument.  */
       is_tmpl_type = (TREE_CODE (arg) == TEMPLATE_DECL
                      && TREE_CODE (DECL_TEMPLATE_RESULT (arg)) == TYPE_DECL)
                     || (TREE_CODE (arg) == TEMPLATE_TEMPLATE_PARM
-                        && !CLASSTYPE_TEMPLATE_INFO (arg));
+                        && !CLASSTYPE_TEMPLATE_INFO (arg))
+                    || (TREE_CODE (arg) == RECORD_TYPE
+                        && CLASSTYPE_TEMPLATE_INFO (arg)
+                        && TREE_CODE (TYPE_NAME (arg)) == TYPE_DECL
+                        && DECL_ARTIFICIAL (TYPE_NAME (arg))
+                        && requires_tmpl_type);
       if (is_tmpl_type && TREE_CODE (arg) == TEMPLATE_TEMPLATE_PARM)
        arg = TYPE_STUB_DECL (arg);
+      else if (is_tmpl_type && TREE_CODE (arg) == RECORD_TYPE)
+       arg = CLASSTYPE_TI_TEMPLATE (arg);
       
-      requires_tmpl_type = TREE_CODE (parm) == TEMPLATE_DECL;
       is_type = TREE_CODE_CLASS (TREE_CODE (arg)) == 't'
                || is_tmpl_type
                || (is_tmpl_parm && TREE_CODE (arg) == TYPE_DECL);
-      requires_type = TREE_CODE (parm) == TYPE_DECL
-                     || requires_tmpl_type;
 
       if (requires_type && ! is_type && TREE_CODE (arg) == SCOPE_REF
          && TREE_CODE (TREE_OPERAND (arg, 0)) == TEMPLATE_TYPE_PARM)
@@ -1896,7 +1889,7 @@ coerce_template_parms (parms, arglist, in_decl,
          if (in_decl)
            {
              cp_error ("type/value mismatch at argument %d in template parameter list for `%D'",
-                       i, in_decl);
+                       i + 1, in_decl);
              if (is_tmpl_type)
                cp_error ("  expected a type, got `%T'", DECL_NAME (arg));
              else
index eff72af..04f7dda 100644 (file)
@@ -749,10 +749,21 @@ comptypes (type1, type2, strict)
 
   switch (TREE_CODE (t1))
     {
+    case TEMPLATE_TEMPLATE_PARM:
+      if (TEMPLATE_TYPE_IDX (t1) != TEMPLATE_TYPE_IDX (t2)
+         || TEMPLATE_TYPE_LEVEL (t1) != TEMPLATE_TYPE_LEVEL (t2))
+       return 0;
+      if (! CLASSTYPE_TEMPLATE_INFO (t1) && ! CLASSTYPE_TEMPLATE_INFO (t2))
+       return 1;
+      /* Don't check inheritance.  */
+      strict = 1;
+      /* fall through */
+
     case RECORD_TYPE:
     case UNION_TYPE:
       if (CLASSTYPE_TEMPLATE_INFO (t1) && CLASSTYPE_TEMPLATE_INFO (t2)
-         && CLASSTYPE_TI_TEMPLATE (t1) == CLASSTYPE_TI_TEMPLATE (t2))
+         && (CLASSTYPE_TI_TEMPLATE (t1) == CLASSTYPE_TI_TEMPLATE (t2)
+             || TREE_CODE (t1) == TEMPLATE_TEMPLATE_PARM))
        {
          int i = TREE_VEC_LENGTH (CLASSTYPE_TI_ARGS (t1));
          tree *p1 = &TREE_VEC_ELT (CLASSTYPE_TI_ARGS (t1), 0);
@@ -845,37 +856,6 @@ comptypes (type1, type2, strict)
       val = comp_array_types (comptypes, t1, t2, strict);
       break;
 
-    case TEMPLATE_TEMPLATE_PARM:
-      if (TEMPLATE_TYPE_IDX (t1) != TEMPLATE_TYPE_IDX (t2)
-         || TEMPLATE_TYPE_LEVEL (t1) != TEMPLATE_TYPE_LEVEL (t2))
-       return 0;
-
-      if (CLASSTYPE_TEMPLATE_INFO (t1) && CLASSTYPE_TEMPLATE_INFO (t2))
-       {
-         int i = TREE_VEC_LENGTH (CLASSTYPE_TI_ARGS (t1));
-         tree *p1 = &TREE_VEC_ELT (CLASSTYPE_TI_ARGS (t1), 0);
-         tree *p2 = &TREE_VEC_ELT (CLASSTYPE_TI_ARGS (t2), 0);
-       
-         while (i--)
-           {
-             if (TREE_CODE_CLASS (TREE_CODE (p1[i])) == 't')
-               {
-                 if (! comptypes (p1[i], p2[i], 1))
-                   return 0;
-               }
-             else
-               {
-                 if (simple_cst_equal (p1[i], p2[i]) <= 0)
-                   return 0;
-               }
-           }
-         return 1;
-       }
-      else if (CLASSTYPE_TEMPLATE_INFO (t1) || CLASSTYPE_TEMPLATE_INFO (t2))
-       return 0;
-      else
-       return 1;
-
     case TEMPLATE_TYPE_PARM:
       return TEMPLATE_TYPE_IDX (t1) == TEMPLATE_TYPE_IDX (t2)
        && TEMPLATE_TYPE_LEVEL (t1) == TEMPLATE_TYPE_LEVEL (t2);