diff -Nrcpad gcc-3.3.5/gcc/cp/call.c gcc-3.3.6/gcc/cp/call.c *** gcc-3.3.5/gcc/cp/call.c 2004-07-28 02:17:21.000000000 +0000 --- gcc-3.3.6/gcc/cp/call.c 2005-04-04 07:42:15.000000000 +0000 *************** build_new_op (code, flags, arg1, arg2, a *** 3762,3789 **** } if (TREE_CODE (cand->fn) == FUNCTION_DECL) ! { ! extern int warn_synth; ! if (warn_synth ! && fnname == ansi_assopname (NOP_EXPR) ! && DECL_ARTIFICIAL (cand->fn) ! && candidates->next ! && ! candidates->next->next) ! { ! warning ("using synthesized `%#D' for copy assignment", ! cand->fn); ! cp_warning_at (" where cfront would use `%#D'", ! cand == candidates ! ? candidates->next->fn ! : candidates->fn); ! } ! ! return build_over_call ! (cand, ! TREE_CODE (TREE_TYPE (cand->fn)) == METHOD_TYPE ! ? mem_arglist : arglist, ! LOOKUP_NORMAL); ! } /* Check for comparison of different enum types. */ switch (code) --- 3762,3772 ---- } if (TREE_CODE (cand->fn) == FUNCTION_DECL) ! return build_over_call ! (cand, ! TREE_CODE (TREE_TYPE (cand->fn)) == METHOD_TYPE ! ? mem_arglist : arglist, ! LOOKUP_NORMAL); /* Check for comparison of different enum types. */ switch (code) diff -Nrcpad gcc-3.3.5/gcc/cp/ChangeLog gcc-3.3.6/gcc/cp/ChangeLog *** gcc-3.3.5/gcc/cp/ChangeLog 2004-09-30 16:44:00.000000000 +0000 --- gcc-3.3.6/gcc/cp/ChangeLog 2005-05-03 10:49:52.000000000 +0000 *************** *** 1,3 **** --- 1,34 ---- + 2005-05-03 Release Manager + + * GCC 3.3.6 Released. + + 2005-04-04 Gabriel Dos Reis + + PR c++/18644 + * call.c (build_new_op): Remove check for warn_synth. + + 2004-12-18 Volker Reichelt + + PR c++/17456 + * cvt.c (convert_to_void): Set expr to void_zero_node after + overload failure. + + 2004-12-15 Volker Reichelt + + PR c++/16806 + * error.c (dump_expr) [BASELINK]: Use dump_expr. + + 2004-12-10 Volker Reichelt + + PR c++/17868 + * error.c (dump_expr): Add missing case for RDIV_EXPR. + + 2004-12-09 Nathan Sidwell + + PR c++/16681 + * init.c (build_zero_init): Build a RANGE_EXPR for an array + initializer. + 2004-09-30 Release Manager * GCC 3.3.5 Released. diff -Nrcpad gcc-3.3.5/gcc/cp/cvt.c gcc-3.3.6/gcc/cp/cvt.c *** gcc-3.3.5/gcc/cp/cvt.c 2004-02-23 12:50:50.000000000 +0000 --- gcc-3.3.6/gcc/cp/cvt.c 2004-12-18 20:26:10.000000000 +0000 *************** convert_to_void (expr, implicit) *** 903,908 **** --- 903,909 ---- of an overloaded function, and this is not one of them. */ pedwarn ("%s cannot resolve address of overloaded function", implicit ? implicit : "void cast"); + expr = void_zero_node; } else if (implicit && probe == expr && is_overloaded_fn (probe)) /* Only warn when there is no &. */ diff -Nrcpad gcc-3.3.5/gcc/cp/error.c gcc-3.3.6/gcc/cp/error.c *** gcc-3.3.5/gcc/cp/error.c 2004-07-24 13:03:23.000000000 +0000 --- gcc-3.3.6/gcc/cp/error.c 2004-12-15 16:45:23.000000000 +0000 *************** dump_expr (t, flags) *** 1724,1729 **** --- 1724,1730 ---- case CEIL_DIV_EXPR: case FLOOR_DIV_EXPR: case ROUND_DIV_EXPR: + case RDIV_EXPR: dump_binary_op ("/", t, flags); break; *************** dump_expr (t, flags) *** 2070,2076 **** break; case BASELINK: ! print_tree_identifier (scratch_buffer, DECL_NAME (get_first_fn (t))); break; case TREE_LIST: --- 2071,2077 ---- break; case BASELINK: ! dump_expr (get_first_fn (t), flags & ~TFF_EXPR_IN_PARENS); break; case TREE_LIST: diff -Nrcpad gcc-3.3.5/gcc/cp/init.c gcc-3.3.6/gcc/cp/init.c *** gcc-3.3.5/gcc/cp/init.c 2004-07-28 02:17:28.000000000 +0000 --- gcc-3.3.6/gcc/cp/init.c 2004-12-09 15:09:19.000000000 +0000 *************** build_zero_init (tree type, tree nelts, *** 235,241 **** } else if (TREE_CODE (type) == ARRAY_TYPE) { - tree index; tree max_index; tree inits; --- 235,240 ---- *************** build_zero_init (tree type, tree nelts, *** 249,263 **** /* A zero-sized array, which is accepted as an extension, will have an upper bound of -1. */ if (!tree_int_cst_equal (max_index, integer_minus_one_node)) ! for (index = size_zero_node; ! !tree_int_cst_lt (max_index, index); ! index = size_binop (PLUS_EXPR, index, size_one_node)) ! inits = tree_cons (index, ! build_zero_init (TREE_TYPE (type), ! /*nelts=*/NULL_TREE, ! static_storage_p), ! inits); ! CONSTRUCTOR_ELTS (init) = nreverse (inits); } else if (TREE_CODE (type) == REFERENCE_TYPE) ; --- 248,264 ---- /* A zero-sized array, which is accepted as an extension, will have an upper bound of -1. */ if (!tree_int_cst_equal (max_index, integer_minus_one_node)) ! { ! tree elt_init = build_zero_init (TREE_TYPE (type), ! /*nelts=*/NULL_TREE, ! static_storage_p); ! tree range = build (RANGE_EXPR, ! sizetype, size_zero_node, max_index); ! ! inits = tree_cons (range, elt_init, inits); ! } ! ! CONSTRUCTOR_ELTS (init) = nreverse (inits); } else if (TREE_CODE (type) == REFERENCE_TYPE) ; diff -Nrcpad gcc-3.3.5/gcc/cp/parse.c gcc-3.3.6/gcc/cp/parse.c *** gcc-3.3.5/gcc/cp/parse.c 2004-09-30 17:42:36.000000000 +0000 --- gcc-3.3.6/gcc/cp/parse.c 2005-05-03 12:47:06.000000000 +0000 *************** *** 1,4 **** ! /* A Bison parser, made from parse.y, by GNU bison 1.75. */ /* Skeleton parser for Yacc-like parsing with Bison, Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc. --- 1,4 ---- ! /* A Bison parser, made by GNU Bison 1.875. */ /* Skeleton parser for Yacc-like parsing with Bison, Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc. *************** *** 34,43 **** USER NAME SPACE" below. */ /* Identify Bison output. */ ! #define YYBISON 1 /* Pure parsers. */ ! #define YYPURE 0 /* Using locations. */ #define YYLSP_NEEDED 0 --- 34,46 ---- USER NAME SPACE" below. */ /* Identify Bison output. */ ! #define YYBISON 1 ! ! /* Skeleton name. */ ! #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ ! #define YYPURE 0 /* Using locations. */ #define YYLSP_NEEDED 0 *************** *** 231,237 **** /* Copy the first part of user declarations. */ ! #line 8 "parse.y" #include "config.h" --- 234,240 ---- /* Copy the first part of user declarations. */ ! #line 30 "parse.y" #include "config.h" *************** check_class_key (key, aggr) *** 484,527 **** # define YYERROR_VERBOSE 0 #endif ! #ifndef YYSTYPE ! #line 249 "parse.y" ! typedef union { GTY(()) long itype; tree ttype; char *strtype; enum tree_code code; flagged_type_tree ftype; struct unparsed_text *pi; ! } yystype; ! /* Line 193 of /usr/share/bison/yacc.c. */ ! #line 499 "p13706.c" ! # define YYSTYPE yystype # define YYSTYPE_IS_TRIVIAL 1 #endif ! #ifndef YYLTYPE ! typedef struct yyltype ! { ! int first_line; ! int first_column; ! int last_line; ! int last_column; ! } yyltype; ! # define YYLTYPE yyltype ! # define YYLTYPE_IS_TRIVIAL 1 ! #endif /* Copy the second part of user declarations. */ ! #line 444 "parse.y" /* Tell yyparse how to print a token's value, if yydebug is set. */ #define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL) extern void yyprint PARAMS ((FILE *, int, YYSTYPE)); ! /* Line 213 of /usr/share/bison/yacc.c. */ ! #line 525 "p13706.c" #if ! defined (yyoverflow) || YYERROR_VERBOSE --- 487,521 ---- # define YYERROR_VERBOSE 0 #endif ! #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) ! #line 271 "parse.y" ! typedef union YYSTYPE { GTY(()) long itype; tree ttype; char *strtype; enum tree_code code; flagged_type_tree ftype; struct unparsed_text *pi; ! } YYSTYPE; ! /* Line 191 of yacc.c. */ ! #line 501 "p19357.c" ! # define yystype YYSTYPE /* obsolescent; will be withdrawn */ ! # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif ! /* Copy the second part of user declarations. */ ! #line 478 "parse.y" /* Tell yyparse how to print a token's value, if yydebug is set. */ #define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL) extern void yyprint PARAMS ((FILE *, int, YYSTYPE)); ! /* Line 214 of yacc.c. */ ! #line 518 "p19357.c" #if ! defined (yyoverflow) || YYERROR_VERBOSE *************** extern void yyprint PARAMS ((FILE *, i *** 557,563 **** #if (! defined (yyoverflow) \ && (! defined (__cplusplus) \ ! || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc --- 551,557 ---- #if (! defined (yyoverflow) \ && (! defined (__cplusplus) \ ! || (YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc *************** union yyalloc *** 567,579 **** }; /* The size of the maximum gap between one aligned stack and the next. */ ! # define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ ! + YYSTACK_GAP_MAX) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ --- 561,573 ---- }; /* The size of the maximum gap between one aligned stack and the next. */ ! # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ ! + YYSTACK_GAP_MAXIMUM) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ *************** union yyalloc *** 587,593 **** { \ register YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ ! (To)[yyi] = (From)[yyi]; \ } \ while (0) # endif --- 581,587 ---- { \ register YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ ! (To)[yyi] = (From)[yyi]; \ } \ while (0) # endif *************** union yyalloc *** 604,610 **** YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack, Stack, yysize); \ Stack = &yyptr->Stack; \ ! yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (0) --- 598,604 ---- YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack, Stack, yysize); \ Stack = &yyptr->Stack; \ ! yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (0) *************** union yyalloc *** 619,624 **** --- 613,619 ---- /* YYFINAL -- State number of the termination state. */ #define YYFINAL 4 + /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 13318 /* YYNTOKENS -- Number of terminals. */ *************** union yyalloc *** 634,641 **** #define YYUNDEFTOK 2 #define YYMAXUTOK 344 ! #define YYTRANSLATE(X) \ ! ((unsigned)(X) <= YYMAXUTOK ? yytranslate[X] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const unsigned char yytranslate[] = --- 629,636 ---- #define YYUNDEFTOK 2 #define YYMAXUTOK 344 ! #define YYTRANSLATE(YYX) \ ! ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const unsigned char yytranslate[] = *************** static const short yyrhs[] = *** 1094,1193 **** /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short yyrline[] = { ! 0, 451, 451, 454, 461, 460, 464, 468, 470, 473, ! 477, 481, 487, 492, 491, 499, 502, 506, 505, 509, ! 511, 513, 515, 517, 520, 519, 524, 523, 527, 528, ! 530, 531, 537, 535, 547, 550, 552, 556, 559, 561, ! 567, 565, 580, 587, 596, 598, 599, 601, 605, 608, ! 616, 614, 621, 627, 629, 632, 635, 639, 642, 646, ! 649, 653, 658, 662, 664, 666, 668, 670, 677, 680, ! 684, 687, 689, 691, 694, 697, 701, 703, 705, 707, ! 717, 719, 721, 723, 725, 726, 733, 734, 735, 737, ! 738, 741, 743, 746, 748, 749, 752, 754, 760, 758, ! 769, 772, 774, 780, 778, 783, 788, 787, 791, 796, ! 795, 799, 804, 803, 807, 813, 818, 821, 824, 827, ! 834, 837, 840, 842, 844, 846, 851, 860, 863, 865, ! 867, 870, 872, 877, 884, 887, 889, 894, 893, 902, ! 909, 915, 920, 931, 934, 942, 945, 948, 953, 957, ! 960, 965, 967, 968, 969, 970, 973, 975, 976, 979, ! 981, 982, 987, 985, 991, 990, 995, 994, 998, 997, ! 1001, 1000, 1007, 1005, 1012, 1011, 1016, 1015, 1021, 1025, ! 1031, 1035, 1038, 1041, 1043, 1048, 1054, 1064, 1066, 1074, ! 1077, 1080, 1083, 1088, 1087, 1096, 1099, 1105, 1111, 1112, ! 1124, 1127, 1129, 1131, 1133, 1137, 1140, 1143, 1148, 1152, ! 1157, 1161, 1164, 1165, 1171, 1169, 1192, 1195, 1197, 1198, ! 1199, 1202, 1206, 1209, 1211, 1215, 1218, 1221, 1225, 1228, ! 1230, 1232, 1234, 1237, 1239, 1242, 1246, 1249, 1255, 1258, ! 1261, 1264, 1267, 1272, 1275, 1278, 1282, 1284, 1288, 1292, ! 1294, 1298, 1301, 1306, 1309, 1311, 1316, 1326, 1331, 1337, ! 1339, 1341, 1354, 1357, 1359, 1361, 1363, 1365, 1367, 1369, ! 1371, 1373, 1375, 1377, 1379, 1381, 1383, 1385, 1387, 1389, ! 1391, 1393, 1395, 1397, 1401, 1403, 1405, 1409, 1412, 1414, ! 1416, 1418, 1420, 1422, 1424, 1426, 1428, 1430, 1432, 1434, ! 1436, 1438, 1440, 1442, 1444, 1446, 1448, 1450, 1454, 1456, ! 1458, 1462, 1465, 1467, 1468, 1469, 1470, 1471, 1474, 1487, ! 1495, 1504, 1507, 1509, 1514, 1516, 1517, 1520, 1522, 1530, ! 1532, 1534, 1536, 1540, 1543, 1547, 1550, 1551, 1552, 1556, ! 1564, 1565, 1566, 1576, 1578, 1580, 1583, 1586, 1585, 1598, ! 1600, 1602, 1604, 1606, 1609, 1611, 1613, 1616, 1618, 1629, ! 1630, 1634, 1638, 1642, 1646, 1648, 1652, 1654, 1656, 1664, ! 1673, 1675, 1677, 1679, 1681, 1683, 1685, 1687, 1689, 1691, ! 1693, 1696, 1698, 1700, 1708, 1711, 1715, 1718, 1722, 1725, ! 1729, 1737, 1740, 1747, 1753, 1757, 1759, 1764, 1766, 1772, ! 1774, 1778, 1782, 1788, 1792, 1795, 1799, 1802, 1809, 1812, ! 1816, 1820, 1823, 1826, 1829, 1832, 1838, 1844, 1846, 1857, ! 1860, 1865, 1870, 1878, 1884, 1888, 1891, 1894, 1899, 1902, ! 1904, 1906, 1910, 1914, 1918, 1924, 1927, 1929, 1931, 1935, ! 1939, 1954, 1973, 1976, 1978, 1981, 1983, 1987, 1989, 1993, ! 1995, 1999, 2002, 2008, 2006, 2012, 2022, 2020, 2027, 2033, ! 2038, 2045, 2043, 2052, 2058, 2061, 2065, 2068, 2072, 2077, ! 2080, 2084, 2087, 2089, 2091, 2093, 2099, 2101, 2102, 2103, ! 2107, 2110, 2114, 2117, 2123, 2125, 2128, 2131, 2134, 2139, ! 2142, 2145, 2147, 2149, 2153, 2159, 2164, 2170, 2172, 2176, ! 2179, 2183, 2185, 2187, 2193, 2191, 2202, 2201, 2210, 2213, ! 2216, 2223, 2248, 2266, 2222, 2275, 2283, 2285, 2288, 2290, ! 2295, 2297, 2299, 2301, 2303, 2305, 2309, 2315, 2320, 2325, ! 2332, 2338, 2343, 2350, 2358, 2364, 2371, 2381, 2389, 2395, ! 2401, 2409, 2417, 2430, 2433, 2436, 2440, 2442, 2446, 2449, ! 2453, 2457, 2461, 2463, 2467, 2478, 2492, 2493, 2494, 2495, ! 2498, 2506, 2513, 2521, 2523, 2528, 2530, 2532, 2534, 2536, ! 2538, 2541, 2551, 2556, 2560, 2583, 2589, 2591, 2593, 2595, ! 2599, 2604, 2606, 2612, 2615, 2622, 2632, 2635, 2642, 2652, ! 2654, 2657, 2659, 2662, 2666, 2671, 2675, 2678, 2681, 2686, ! 2689, 2693, 2696, 2698, 2702, 2704, 2709, 2711, 2714, 2717, ! 2722, 2726, 2730, 2740, 2743, 2747, 2751, 2754, 2757, 2765, ! 2768, 2770, 2772, 2778, 2780, 2789, 2792, 2794, 2796, 2798, ! 2802, 2805, 2808, 2810, 2812, 2814, 2818, 2821, 2832, 2842, ! 2844, 2845, 2849, 2856, 2858, 2866, 2869, 2871, 2873, 2875, ! 2879, 2882, 2885, 2887, 2889, 2891, 2895, 2898, 2901, 2903, ! 2905, 2907, 2909, 2911, 2915, 2922, 2926, 2931, 2935, 2940, ! 2942, 2946, 2949, 2951, 2955, 2957, 2958, 2961, 2963, 2965, ! 2969, 2972, 2978, 2989, 2995, 3001, 3005, 3007, 3011, 3025, ! 3027, 3029, 3033, 3041, 3054, 3057, 3063, 3076, 3082, 3084, ! 3085, 3086, 3094, 3099, 3108, 3109, 3113, 3116, 3121, 3127, ! 3130, 3132, 3134, 3136, 3140, 3144, 3148, 3151, 3155, 3157, ! 3166, 3169, 3171, 3173, 3175, 3177, 3179, 3181, 3183, 3187, ! 3191, 3195, 3199, 3201, 3203, 3205, 3207, 3209, 3211, 3213, ! 3215, 3221, 3223, 3224, 3225, 3228, 3233, 3235, 3240, 3242, ! 3245, 3258, 3256, 3264, 3271, 3274, 3269, 3280, 3283, 3282, ! 3290, 3292, 3296, 3300, 3303, 3302, 3310, 3314, 3319, 3313, ! 3324, 3326, 3323, 3334, 3336, 3338, 3340, 3333, 3345, 3347, ! 3344, 3352, 3351, 3356, 3355, 3360, 3359, 3363, 3365, 3367, ! 3369, 3371, 3376, 3379, 3382, 3385, 3388, 3391, 3394, 3400, ! 3402, 3404, 3408, 3411, 3413, 3415, 3418, 3424, 3426, 3422, ! 3433, 3435, 3431, 3440, 3442, 3443, 3456, 3458, 3454, 3463, ! 3465, 3468, 3472, 3480, 3483, 3485, 3487, 3491, 3494, 3495, ! 3503, 3506, 3509, 3512, 3513, 3518, 3521, 3524, 3526, 3530, ! 3533, 3539, 3542, 3548, 3553, 3554, 3560, 3563, 3566, 3568, ! 3571, 3573, 3583, 3599, 3597, 3604, 3606, 3610, 3614, 3617, ! 3620, 3622, 3626, 3628, 3634, 3639, 3642, 3646, 3649, 3652, ! 3657, 3661, 3666, 3668, 3671, 3676, 3682, 3698, 3706, 3709, ! 3712, 3715, 3718, 3721, 3723, 3727, 3733, 3737, 3740, 3744, ! 3747, 3749, 3751, 3757, 3770, 3779, 3782, 3784, 3786, 3788, ! 3790, 3792, 3794, 3796, 3798, 3800, 3802, 3804, 3806, 3808, ! 3810, 3812, 3814, 3816, 3818, 3820, 3822, 3824, 3826, 3828, ! 3830, 3832, 3834, 3836, 3838, 3840, 3842, 3844, 3846, 3848, ! 3853 }; #endif --- 1089,1188 ---- /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short yyrline[] = { ! 0, 487, 487, 488, 497, 497, 500, 505, 506, 510, ! 514, 518, 524, 528, 528, 536, 538, 542, 541, 545, ! 547, 549, 551, 553, 556, 555, 560, 559, 563, 564, ! 566, 567, 573, 572, 584, 586, 588, 593, 595, 597, ! 603, 602, 617, 623, 633, 634, 635, 637, 642, 644, ! 652, 651, 658, 664, 665, 669, 671, 676, 679, 683, ! 685, 690, 702, 704, 706, 708, 710, 712, 720, 722, ! 727, 729, 731, 733, 736, 739, 744, 745, 747, 749, ! 760, 761, 763, 765, 767, 768, 775, 776, 777, 779, ! 780, 784, 785, 788, 790, 791, 794, 796, 804, 803, ! 814, 816, 818, 824, 823, 827, 832, 831, 835, 840, ! 839, 843, 848, 847, 851, 858, 862, 865, 868, 871, ! 880, 882, 885, 887, 889, 891, 898, 906, 909, 911, ! 913, 916, 918, 924, 931, 933, 935, 940, 940, 950, ! 957, 961, 966, 977, 982, 988, 991, 994, 1000, 1003, ! 1006, 1012, 1013, 1014, 1015, 1016, 1020, 1021, 1022, 1026, ! 1027, 1028, 1033, 1032, 1037, 1036, 1041, 1040, 1044, 1043, ! 1047, 1046, 1053, 1051, 1058, 1057, 1062, 1061, 1068, 1072, ! 1080, 1083, 1086, 1090, 1091, 1097, 1103, 1113, 1114, 1124, ! 1125, 1129, 1131, 1136, 1136, 1145, 1147, 1153, 1159, 1160, ! 1173, 1175, 1177, 1179, 1181, 1186, 1188, 1192, 1196, 1201, ! 1205, 1211, 1212, 1213, 1219, 1218, 1240, 1244, 1245, 1246, ! 1247, 1251, 1254, 1257, 1259, 1264, 1266, 1270, 1273, 1276, ! 1278, 1280, 1282, 1285, 1287, 1290, 1294, 1297, 1304, 1307, ! 1310, 1313, 1316, 1321, 1324, 1327, 1331, 1333, 1337, 1341, ! 1343, 1348, 1350, 1356, 1358, 1360, 1365, 1376, 1380, 1387, ! 1388, 1390, 1404, 1406, 1408, 1410, 1412, 1414, 1416, 1418, ! 1420, 1422, 1424, 1426, 1428, 1430, 1432, 1434, 1436, 1438, ! 1440, 1442, 1444, 1446, 1450, 1452, 1454, 1459, 1461, 1463, ! 1465, 1467, 1469, 1471, 1473, 1475, 1477, 1479, 1481, 1483, ! 1485, 1487, 1489, 1491, 1493, 1495, 1497, 1499, 1503, 1505, ! 1507, 1512, 1514, 1516, 1517, 1518, 1519, 1520, 1524, 1537, ! 1544, 1554, 1556, 1558, 1564, 1565, 1566, 1570, 1571, 1580, ! 1581, 1583, 1585, 1590, 1592, 1597, 1600, 1601, 1602, 1607, ! 1614, 1615, 1616, 1626, 1628, 1630, 1633, 1636, 1635, 1650, ! 1652, 1654, 1656, 1658, 1661, 1663, 1665, 1668, 1670, 1681, ! 1682, 1686, 1690, 1694, 1698, 1700, 1704, 1706, 1708, 1716, ! 1725, 1727, 1729, 1731, 1733, 1735, 1737, 1739, 1741, 1743, ! 1745, 1748, 1750, 1752, 1797, 1799, 1804, 1806, 1811, 1813, ! 1819, 1826, 1828, 1836, 1841, 1845, 1847, 1852, 1854, 1862, ! 1863, 1868, 1871, 1878, 1881, 1884, 1888, 1891, 1902, 1904, ! 1909, 1912, 1915, 1918, 1921, 1924, 1931, 1936, 1938, 1960, ! 1962, 1967, 1972, 1980, 1991, 1994, 1997, 2000, 2006, 2008, ! 2010, 2012, 2017, 2021, 2025, 2033, 2035, 2037, 2039, 2043, ! 2047, 2062, 2082, 2084, 2086, 2090, 2091, 2096, 2097, 2102, ! 2103, 2109, 2110, 2116, 2115, 2120, 2135, 2134, 2141, 2148, ! 2153, 2159, 2158, 2166, 2175, 2176, 2181, 2183, 2188, 2193, ! 2195, 2201, 2202, 2204, 2206, 2208, 2216, 2217, 2218, 2219, ! 2224, 2226, 2231, 2233, 2241, 2242, 2245, 2248, 2251, 2258, ! 2260, 2263, 2265, 2267, 2272, 2277, 2282, 2288, 2290, 2296, ! 2298, 2303, 2304, 2306, 2312, 2311, 2321, 2320, 2329, 2332, ! 2335, 2342, 2367, 2385, 2341, 2394, 2402, 2404, 2407, 2409, ! 2415, 2416, 2418, 2420, 2422, 2424, 2429, 2434, 2439, 2444, ! 2452, 2457, 2462, 2470, 2477, 2483, 2491, 2500, 2508, 2514, ! 2520, 2528, 2536, 2551, 2552, 2555, 2560, 2561, 2566, 2568, ! 2573, 2576, 2581, 2582, 2586, 2597, 2611, 2612, 2613, 2614, ! 2618, 2627, 2633, 2642, 2643, 2648, 2650, 2652, 2654, 2656, ! 2658, 2661, 2671, 2676, 2684, 2705, 2711, 2713, 2715, 2717, ! 2728, 2733, 2735, 2743, 2744, 2751, 2763, 2764, 2771, 2782, ! 2783, 2787, 2788, 2792, 2795, 2801, 2804, 2807, 2810, 2816, ! 2818, 2823, 2825, 2827, 2832, 2833, 2841, 2842, 2846, 2848, ! 2854, 2857, 2862, 2873, 2875, 2880, 2883, 2886, 2889, 2899, ! 2901, 2903, 2905, 2912, 2913, 2923, 2925, 2927, 2929, 2931, ! 2935, 2939, 2941, 2943, 2945, 2947, 2951, 2955, 2965, 2976, ! 2977, 2978, 2983, 2991, 2992, 3001, 3003, 3005, 3007, 3009, ! 3013, 3017, 3019, 3021, 3023, 3025, 3029, 3033, 3035, 3037, ! 3039, 3041, 3043, 3045, 3049, 3057, 3060, 3066, 3069, 3075, ! 3076, 3081, 3083, 3085, 3090, 3091, 3092, 3096, 3097, 3099, ! 3103, 3106, 3114, 3124, 3130, 3136, 3141, 3142, 3147, 3160, ! 3162, 3164, 3169, 3176, 3189, 3192, 3200, 3212, 3218, 3220, ! 3221, 3222, 3231, 3236, 3244, 3245, 3250, 3252, 3259, 3265, ! 3267, 3269, 3271, 3273, 3277, 3281, 3286, 3288, 3293, 3294, ! 3304, 3306, 3308, 3310, 3312, 3314, 3316, 3318, 3320, 3324, ! 3328, 3333, 3336, 3338, 3340, 3342, 3344, 3346, 3348, 3350, ! 3352, 3361, 3362, 3363, 3364, 3368, 3373, 3375, 3381, 3382, ! 3386, 3398, 3397, 3405, 3411, 3414, 3410, 3421, 3423, 3423, ! 3431, 3432, 3437, 3440, 3443, 3442, 3450, 3454, 3459, 3453, ! 3464, 3466, 3463, 3474, 3476, 3478, 3480, 3473, 3485, 3487, ! 3484, 3492, 3491, 3496, 3495, 3500, 3499, 3503, 3505, 3507, ! 3509, 3511, 3516, 3519, 3522, 3525, 3528, 3531, 3534, 3540, ! 3542, 3544, 3548, 3551, 3553, 3555, 3558, 3564, 3566, 3563, ! 3573, 3575, 3572, 3581, 3582, 3584, 3596, 3598, 3595, 3604, ! 3605, 3609, 3625, 3634, 3636, 3638, 3640, 3645, 3647, 3648, ! 3658, 3659, 3664, 3665, 3666, 3674, 3675, 3679, 3680, 3685, ! 3687, 3694, 3696, 3708, 3711, 3712, 3720, 3722, 3725, 3727, ! 3730, 3732, 3742, 3758, 3757, 3764, 3765, 3770, 3773, 3776, ! 3779, 3781, 3786, 3787, 3797, 3800, 3803, 3807, 3810, 3813, ! 3819, 3822, 3828, 3829, 3833, 3838, 3843, 3860, 3868, 3870, ! 3874, 3876, 3880, 3882, 3884, 3889, 3894, 3899, 3901, 3906, ! 3908, 3910, 3912, 3919, 3932, 3941, 3943, 3945, 3947, 3949, ! 3951, 3953, 3955, 3957, 3959, 3961, 3963, 3965, 3967, 3969, ! 3971, 3973, 3975, 3977, 3979, 3981, 3983, 3985, 3987, 3989, ! 3991, 3993, 3995, 3997, 3999, 4001, 4003, 4005, 4007, 4009, ! 4017 }; #endif *************** static const short yypgoto[] = *** 1964,1970 **** /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. ! If YYTABLE_NINF, parse error. */ #define YYTABLE_NINF -931 static const short yytable[] = { --- 1959,1965 ---- /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. ! If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -931 static const short yytable[] = { *************** static const unsigned short yystos[] = *** 4845,4851 **** #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) ! #define YYEMPTY -2 #define YYEOF 0 #define YYACCEPT goto yyacceptlab --- 4840,4846 ---- #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) ! #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab *************** do \ *** 4866,4878 **** { \ yychar = (Token); \ yylval = (Value); \ ! yychar1 = YYTRANSLATE (yychar); \ YYPOPSTACK; \ goto yybackup; \ } \ else \ { \ ! yyerror ("syntax error: cannot back up"); \ YYERROR; \ } \ while (0) --- 4861,4873 ---- { \ yychar = (Token); \ yylval = (Value); \ ! yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK; \ goto yybackup; \ } \ else \ { \ ! yyerror ("syntax error: cannot back up");\ YYERROR; \ } \ while (0) *************** while (0) *** 4884,4890 **** are run). */ #ifndef YYLLOC_DEFAULT ! # define YYLLOC_DEFAULT(Current, Rhs, N) \ Current.first_line = Rhs[1].first_line; \ Current.first_column = Rhs[1].first_column; \ Current.last_line = Rhs[N].last_line; \ --- 4879,4885 ---- are run). */ #ifndef YYLLOC_DEFAULT ! # define YYLLOC_DEFAULT(Current, Rhs, N) \ Current.first_line = Rhs[1].first_line; \ Current.first_column = Rhs[1].first_column; \ Current.last_line = Rhs[N].last_line; \ *************** while (0) *** 4893,4899 **** /* YYLEX -- calling `yylex' with the right arguments. */ ! #define YYLEX yylex () /* Enable debugging if requested. */ #if YYDEBUG --- 4888,4898 ---- /* YYLEX -- calling `yylex' with the right arguments. */ ! #ifdef YYLEX_PARAM ! # define YYLEX yylex (YYLEX_PARAM) ! #else ! # define YYLEX yylex () ! #endif /* Enable debugging if requested. */ #if YYDEBUG *************** do { \ *** 4908,4926 **** --- 4907,4999 ---- if (yydebug) \ YYFPRINTF Args; \ } while (0) + # define YYDSYMPRINT(Args) \ do { \ if (yydebug) \ yysymprint Args; \ } while (0) + + # define YYDSYMPRINTF(Title, Token, Value, Location) \ + do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yysymprint (stderr, \ + Token, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ + } while (0) + + /*------------------------------------------------------------------. + | yy_stack_print -- Print the state stack from its BOTTOM up to its | + | TOP (cinluded). | + `------------------------------------------------------------------*/ + + #if defined (__STDC__) || defined (__cplusplus) + static void + yy_stack_print (short *bottom, short *top) + #else + static void + yy_stack_print (bottom, top) + short *bottom; + short *top; + #endif + { + YYFPRINTF (stderr, "Stack now"); + for (/* Nothing. */; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); + } + + # define YY_STACK_PRINT(Bottom, Top) \ + do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ + } while (0) + + + /*------------------------------------------------. + | Report that the YYRULE is going to be reduced. | + `------------------------------------------------*/ + + #if defined (__STDC__) || defined (__cplusplus) + static void + yy_reduce_print (int yyrule) + #else + static void + yy_reduce_print (yyrule) + int yyrule; + #endif + { + int yyi; + unsigned int yylineno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ", + yyrule - 1, yylineno); + /* Print the symbols being reduced, and their result. */ + for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) + YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]); + YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]); + } + + # define YY_REDUCE_PRINT(Rule) \ + do { \ + if (yydebug) \ + yy_reduce_print (Rule); \ + } while (0) + /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YYDSYMPRINT(Args) + # define YYDSYMPRINTF(Title, Token, Value, Location) + # define YY_STACK_PRINT(Bottom, Top) + # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ + /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 *************** yystpcpy (yydest, yysrc) *** 4999,5093 **** #if YYDEBUG ! /*-----------------------------. ! | Print this symbol on YYOUT. | ! `-----------------------------*/ - static void #if defined (__STDC__) || defined (__cplusplus) ! yysymprint (FILE* yyout, int yytype, YYSTYPE yyvalue) #else ! yysymprint (yyout, yytype, yyvalue) ! FILE* yyout; int yytype; ! YYSTYPE yyvalue; #endif { /* Pacify ``unused variable'' warnings. */ ! (void) yyvalue; if (yytype < YYNTOKENS) { ! YYFPRINTF (yyout, "token %s (", yytname[yytype]); # ifdef YYPRINT ! YYPRINT (yyout, yytoknum[yytype], yyvalue); # endif } else ! YYFPRINTF (yyout, "nterm %s (", yytname[yytype]); switch (yytype) { default: break; } ! YYFPRINTF (yyout, ")"); } - #endif /* YYDEBUG. */ - /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ - static void #if defined (__STDC__) || defined (__cplusplus) ! yydestruct (int yytype, YYSTYPE yyvalue) #else ! yydestruct (yytype, yyvalue) int yytype; ! YYSTYPE yyvalue; #endif { /* Pacify ``unused variable'' warnings. */ ! (void) yyvalue; switch (yytype) { default: break; } } - ! /* The user can define YYPARSE_PARAM as the name of an argument to be passed ! into yyparse. The argument should have type void *. ! It should actually point to an object. ! Grammar actions can access the variable by casting it ! to the proper pointer type. */ #ifdef YYPARSE_PARAM # if defined (__STDC__) || defined (__cplusplus) ! # define YYPARSE_PARAM_ARG void *YYPARSE_PARAM ! # define YYPARSE_PARAM_DECL # else ! # define YYPARSE_PARAM_ARG YYPARSE_PARAM ! # define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; # endif ! #else /* !YYPARSE_PARAM */ ! # define YYPARSE_PARAM_ARG ! # define YYPARSE_PARAM_DECL ! #endif /* !YYPARSE_PARAM */ ! ! /* Prevent warning if -Wstrict-prototypes. */ ! #ifdef __GNUC__ ! # ifdef YYPARSE_PARAM ! int yyparse (void *); ! # else int yyparse (void); ! # endif #endif /* The lookahead symbol. */ --- 5072,5156 ---- #if YYDEBUG ! /*--------------------------------. ! | Print this symbol on YYOUTPUT. | ! `--------------------------------*/ #if defined (__STDC__) || defined (__cplusplus) ! static void ! yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep) #else ! static void ! yysymprint (yyoutput, yytype, yyvaluep) ! FILE *yyoutput; int yytype; ! YYSTYPE *yyvaluep; #endif { /* Pacify ``unused variable'' warnings. */ ! (void) yyvaluep; if (yytype < YYNTOKENS) { ! YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); # ifdef YYPRINT ! YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # endif } else ! YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); switch (yytype) { default: break; } ! YYFPRINTF (yyoutput, ")"); } + #endif /* ! YYDEBUG */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ #if defined (__STDC__) || defined (__cplusplus) ! static void ! yydestruct (int yytype, YYSTYPE *yyvaluep) #else ! static void ! yydestruct (yytype, yyvaluep) int yytype; ! YYSTYPE *yyvaluep; #endif { /* Pacify ``unused variable'' warnings. */ ! (void) yyvaluep; switch (yytype) { + default: break; } } ! /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM # if defined (__STDC__) || defined (__cplusplus) ! int yyparse (void *YYPARSE_PARAM); # else ! int yyparse (); # endif ! #else /* ! YYPARSE_PARAM */ ! #if defined (__STDC__) || defined (__cplusplus) int yyparse (void); ! #else ! int yyparse (); #endif + #endif /* ! YYPARSE_PARAM */ + /* The lookahead symbol. */ *************** int yychar; *** 5096,5108 **** /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; ! /* Number of parse errors so far. */ int yynerrs; int ! yyparse (YYPARSE_PARAM_ARG) ! YYPARSE_PARAM_DECL { register int yystate; --- 5159,5190 ---- /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; ! /* Number of syntax errors so far. */ int yynerrs; + + /*----------. + | yyparse. | + `----------*/ + + #ifdef YYPARSE_PARAM + # if defined (__STDC__) || defined (__cplusplus) + int yyparse (void *YYPARSE_PARAM) + # else + int yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; + # endif + #else /* ! YYPARSE_PARAM */ + #if defined (__STDC__) || defined (__cplusplus) int ! yyparse (void) ! #else ! int ! yyparse () ! ! #endif ! #endif { register int yystate; *************** yyparse (YYPARSE_PARAM_ARG) *** 5111,5117 **** /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* Lookahead token as an internal (translated) token number. */ ! int yychar1 = 0; /* Three stacks and their tools: `yyss': related to states, --- 5193,5199 ---- /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* Lookahead token as an internal (translated) token number. */ ! int yytoken = 0; /* Three stacks and their tools: `yyss': related to states, *************** yyparse (YYPARSE_PARAM_ARG) *** 5175,5181 **** yysetstate: *yyssp = yystate; ! if (yyssp >= yyss + yystacksize - 1) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; --- 5257,5263 ---- yysetstate: *yyssp = yystate; ! if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; *************** yyparse (YYPARSE_PARAM_ARG) *** 5207,5216 **** goto yyoverflowlab; # else /* Extend the stack our own way. */ ! if (yystacksize >= YYMAXDEPTH) goto yyoverflowlab; yystacksize *= 2; ! if (yystacksize > YYMAXDEPTH) yystacksize = YYMAXDEPTH; { --- 5289,5298 ---- goto yyoverflowlab; # else /* Extend the stack our own way. */ ! if (YYMAXDEPTH <= yystacksize) goto yyoverflowlab; yystacksize *= 2; ! if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { *************** yyparse (YYPARSE_PARAM_ARG) *** 5236,5242 **** YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); ! if (yyssp >= yyss + yystacksize - 1) YYABORT; } --- 5318,5324 ---- YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); ! if (yyss + yystacksize - 1 <= yyssp) YYABORT; } *************** yybackup: *** 5261,5299 **** /* Not known => get a lookahead token if don't already have one. */ ! /* yychar is either YYEMPTY or YYEOF ! or a valid token in external form. */ ! if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } ! /* Convert token to internal form (in yychar1) for indexing tables with. */ ! ! if (yychar <= 0) /* This means end of input. */ { ! yychar1 = 0; ! yychar = YYEOF; /* Don't call YYLEX any more. */ ! YYDPRINTF ((stderr, "Now at end of input.\n")); } else { ! yychar1 = YYTRANSLATE (yychar); ! ! /* We have to keep this `#if YYDEBUG', since we use variables ! which are defined only if `YYDEBUG' is set. */ ! YYDPRINTF ((stderr, "Next token is ")); ! YYDSYMPRINT ((stderr, yychar1, yylval)); ! YYDPRINTF ((stderr, "\n")); } ! /* If the proper action on seeing token YYCHAR1 is to reduce or to detect an error, take that action. */ ! yyn += yychar1; ! if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yychar1) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) --- 5343,5370 ---- /* Not known => get a lookahead token if don't already have one. */ ! /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } ! if (yychar <= YYEOF) { ! yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { ! yytoken = YYTRANSLATE (yychar); ! YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc); } ! /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ ! yyn += yytoken; ! if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) *************** yybackup: *** 5308,5315 **** YYACCEPT; /* Shift the lookahead token. */ ! YYDPRINTF ((stderr, "Shifting token %d (%s), ", ! yychar, yytname[yychar1])); /* Discard the token being shifted unless it is eof. */ if (yychar != YYEOF) --- 5379,5385 ---- YYACCEPT; /* Shift the lookahead token. */ ! YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken])); /* Discard the token being shifted unless it is eof. */ if (yychar != YYEOF) *************** yyreduce: *** 5355,5560 **** yyval = yyvsp[1-yylen]; ! ! #if YYDEBUG ! /* We have to keep this `#if YYDEBUG', since we use variables which ! are defined only if `YYDEBUG' is set. */ ! if (yydebug) ! { ! int yyi; ! ! YYFPRINTF (stderr, "Reducing via rule %d (line %d), ", ! yyn - 1, yyrline[yyn]); ! ! /* Print the symbols being reduced, and their result. */ ! for (yyi = yyprhs[yyn]; yyrhs[yyi] >= 0; yyi++) ! YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]); ! YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]); ! } ! #endif switch (yyn) { case 2: ! #line 453 "parse.y" ! { finish_translation_unit (); } break; case 3: ! #line 455 "parse.y" ! { finish_translation_unit (); } break; case 4: ! #line 461 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 5: ! #line 463 "parse.y" ! { yyval.ttype = NULL_TREE; ggc_collect (); } break; case 6: ! #line 465 "parse.y" ! { yyval.ttype = NULL_TREE; ggc_collect (); } break; case 9: ! #line 474 "parse.y" { have_extern_spec = true; ! yyval.ttype = NULL_TREE; } break; case 10: ! #line 478 "parse.y" ! { have_extern_spec = false; } break; case 11: ! #line 483 "parse.y" { yyval.itype = pedantic; ! pedantic = 0; } break; case 13: ! #line 492 "parse.y" { if (pending_lang_change) do_pending_lang_change(); ! type_lookups = NULL_TREE; } break; case 14: ! #line 495 "parse.y" { if (! toplevel_bindings_p ()) ! pop_everything (); } break; case 15: ! #line 501 "parse.y" ! { do_pending_inlines (); } break; case 16: ! #line 503 "parse.y" ! { do_pending_inlines (); } break; case 17: ! #line 506 "parse.y" ! { warning ("keyword `export' not implemented, and will be ignored"); } break; case 18: ! #line 508 "parse.y" ! { do_pending_inlines (); } break; case 19: ! #line 510 "parse.y" ! { do_pending_inlines (); } break; case 20: ! #line 512 "parse.y" ! { assemble_asm (yyvsp[-2].ttype); } break; case 21: ! #line 514 "parse.y" ! { pop_lang_context (); } break; case 22: ! #line 516 "parse.y" ! { do_pending_inlines (); pop_lang_context (); } break; case 23: ! #line 518 "parse.y" ! { do_pending_inlines (); pop_lang_context (); } break; case 24: ! #line 520 "parse.y" ! { push_namespace (yyvsp[-1].ttype); } break; case 25: ! #line 522 "parse.y" ! { pop_namespace (); } break; case 26: ! #line 524 "parse.y" ! { push_namespace (NULL_TREE); } break; case 27: ! #line 526 "parse.y" ! { pop_namespace (); } break; case 29: ! #line 529 "parse.y" ! { do_toplevel_using_decl (yyvsp[-1].ttype); } break; case 31: ! #line 532 "parse.y" ! { pedantic = yyvsp[-1].itype; } break; case 32: ! #line 537 "parse.y" ! { begin_only_namespace_names (); } break; case 33: ! #line 539 "parse.y" { end_only_namespace_names (); if (lastiddecl) yyvsp[-1].ttype = lastiddecl; do_namespace_alias (yyvsp[-4].ttype, yyvsp[-1].ttype); ! } break; case 34: ! #line 549 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 35: ! #line 551 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 36: ! #line 553 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 37: ! #line 558 "parse.y" ! { yyval.ttype = build_nt (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 38: ! #line 560 "parse.y" ! { yyval.ttype = build_nt (SCOPE_REF, global_namespace, yyvsp[0].ttype); } break; case 39: ! #line 562 "parse.y" ! { yyval.ttype = build_nt (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 40: ! #line 567 "parse.y" ! { begin_only_namespace_names (); } break; case 41: ! #line 569 "parse.y" { end_only_namespace_names (); /* If no declaration was found, the using-directive is --- 5425,5614 ---- yyval = yyvsp[1-yylen]; ! YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: ! #line 487 "parse.y" ! { finish_translation_unit (); ;} break; case 3: ! #line 489 "parse.y" ! { finish_translation_unit (); ;} break; case 4: ! #line 497 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 5: ! #line 499 "parse.y" ! { yyval.ttype = NULL_TREE; ggc_collect (); ;} break; case 6: ! #line 501 "parse.y" ! { yyval.ttype = NULL_TREE; ggc_collect (); ;} break; case 9: ! #line 510 "parse.y" { have_extern_spec = true; ! yyval.ttype = NULL_TREE; ;} break; case 10: ! #line 514 "parse.y" ! { have_extern_spec = false; ;} break; case 11: ! #line 519 "parse.y" { yyval.itype = pedantic; ! pedantic = 0; ;} break; case 13: ! #line 528 "parse.y" { if (pending_lang_change) do_pending_lang_change(); ! type_lookups = NULL_TREE; ;} break; case 14: ! #line 531 "parse.y" { if (! toplevel_bindings_p ()) ! pop_everything (); ;} break; case 15: ! #line 537 "parse.y" ! { do_pending_inlines (); ;} break; case 16: ! #line 539 "parse.y" ! { do_pending_inlines (); ;} break; case 17: ! #line 542 "parse.y" ! { warning ("keyword `export' not implemented, and will be ignored"); ;} break; case 18: ! #line 544 "parse.y" ! { do_pending_inlines (); ;} break; case 19: ! #line 546 "parse.y" ! { do_pending_inlines (); ;} break; case 20: ! #line 548 "parse.y" ! { assemble_asm (yyvsp[-2].ttype); ;} break; case 21: ! #line 550 "parse.y" ! { pop_lang_context (); ;} break; case 22: ! #line 552 "parse.y" ! { do_pending_inlines (); pop_lang_context (); ;} break; case 23: ! #line 554 "parse.y" ! { do_pending_inlines (); pop_lang_context (); ;} break; case 24: ! #line 556 "parse.y" ! { push_namespace (yyvsp[-1].ttype); ;} break; case 25: ! #line 558 "parse.y" ! { pop_namespace (); ;} break; case 26: ! #line 560 "parse.y" ! { push_namespace (NULL_TREE); ;} break; case 27: ! #line 562 "parse.y" ! { pop_namespace (); ;} break; case 29: ! #line 565 "parse.y" ! { do_toplevel_using_decl (yyvsp[-1].ttype); ;} break; case 31: ! #line 568 "parse.y" ! { pedantic = yyvsp[-1].itype; ;} break; case 32: ! #line 573 "parse.y" ! { begin_only_namespace_names (); ;} break; case 33: ! #line 575 "parse.y" { end_only_namespace_names (); if (lastiddecl) yyvsp[-1].ttype = lastiddecl; do_namespace_alias (yyvsp[-4].ttype, yyvsp[-1].ttype); ! ;} break; case 34: ! #line 585 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 35: ! #line 587 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 36: ! #line 589 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 37: ! #line 594 "parse.y" ! { yyval.ttype = build_nt (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 38: ! #line 596 "parse.y" ! { yyval.ttype = build_nt (SCOPE_REF, global_namespace, yyvsp[0].ttype); ;} break; case 39: ! #line 598 "parse.y" ! { yyval.ttype = build_nt (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 40: ! #line 603 "parse.y" ! { begin_only_namespace_names (); ;} break; case 41: ! #line 605 "parse.y" { end_only_namespace_names (); /* If no declaration was found, the using-directive is *************** yyreduce: *** 5563,6052 **** if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE && lastiddecl) yyvsp[-1].ttype = lastiddecl; do_using_directive (yyvsp[-1].ttype); ! } break; case 42: ! #line 582 "parse.y" { if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype; ! } break; case 43: ! #line 588 "parse.y" { yyval.ttype = yyvsp[-1].ttype; if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype; ! } break; case 46: ! #line 600 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 47: ! #line 602 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 48: ! #line 607 "parse.y" ! { push_lang_context (yyvsp[0].ttype); } break; case 49: ! #line 609 "parse.y" { if (current_lang_name != yyvsp[0].ttype) error ("use of linkage spec `%D' is different from previous spec `%D'", yyvsp[0].ttype, current_lang_name); ! pop_lang_context (); push_lang_context (yyvsp[0].ttype); } break; case 50: ! #line 616 "parse.y" ! { begin_template_parm_list (); } break; case 51: ! #line 618 "parse.y" ! { yyval.ttype = end_template_parm_list (yyvsp[-1].ttype); } break; case 52: ! #line 623 "parse.y" { begin_specialization(); ! yyval.ttype = NULL_TREE; } break; case 55: ! #line 634 "parse.y" ! { yyval.ttype = process_template_parm (NULL_TREE, yyvsp[0].ttype); } break; case 56: ! #line 636 "parse.y" ! { yyval.ttype = process_template_parm (yyvsp[-2].ttype, yyvsp[0].ttype); } break; case 57: ! #line 641 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 58: ! #line 643 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 59: ! #line 648 "parse.y" ! { yyval.ttype = finish_template_type_parm (yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 60: ! #line 650 "parse.y" ! { yyval.ttype = finish_template_type_parm (class_type_node, yyvsp[0].ttype); } break; case 61: ! #line 655 "parse.y" ! { yyval.ttype = finish_template_template_parm (yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 62: ! #line 661 "parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); } break; case 63: ! #line 663 "parse.y" ! { yyval.ttype = build_tree_list (groktypename (yyvsp[0].ftype.t), yyvsp[-2].ttype); } break; case 64: ! #line 665 "parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); } break; case 65: ! #line 667 "parse.y" ! { yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-2].ftype.t); } break; case 66: ! #line 669 "parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); } break; case 67: ! #line 671 "parse.y" { yyvsp[0].ttype = check_template_template_default_arg (yyvsp[0].ttype); yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype); ! } break; case 68: ! #line 679 "parse.y" ! { finish_template_decl (yyvsp[-1].ttype); } break; case 69: ! #line 681 "parse.y" ! { finish_template_decl (yyvsp[-1].ttype); } break; case 70: ! #line 686 "parse.y" ! { do_pending_inlines (); } break; case 71: ! #line 688 "parse.y" ! { do_pending_inlines (); } break; case 72: ! #line 690 "parse.y" ! { do_pending_inlines (); } break; case 73: ! #line 692 "parse.y" { do_pending_inlines (); ! pop_lang_context (); } break; case 74: ! #line 695 "parse.y" { do_pending_inlines (); ! pop_lang_context (); } break; case 75: ! #line 698 "parse.y" ! { pedantic = yyvsp[-1].itype; } break; case 77: ! #line 704 "parse.y" ! {} break; case 78: ! #line 706 "parse.y" ! { note_list_got_semicolon (yyvsp[-2].ftype.t); } break; case 79: ! #line 708 "parse.y" { if (yyvsp[-1].ftype.t != error_mark_node) { maybe_process_partial_specialization (yyvsp[-1].ftype.t); note_got_semicolon (yyvsp[-1].ftype.t); } ! } break; case 81: ! #line 720 "parse.y" ! {} break; case 82: ! #line 722 "parse.y" ! { note_list_got_semicolon (yyvsp[-2].ftype.t); } break; case 83: ! #line 724 "parse.y" ! { pedwarn ("empty declaration"); } break; case 85: ! #line 727 "parse.y" { tree t, attrs; split_specs_attrs (yyvsp[-1].ftype.t, &t, &attrs); shadow_tag (t); note_list_got_semicolon (yyvsp[-1].ftype.t); ! } break; case 88: ! #line 736 "parse.y" ! { end_input (); } break; case 98: ! #line 760 "parse.y" ! { yyval.ttype = begin_compound_stmt (/*has_no_scope=*/1); } break; case 99: ! #line 762 "parse.y" { STMT_LINENO (yyvsp[-1].ttype) = yyvsp[-3].itype; finish_compound_stmt (/*has_no_scope=*/1, yyvsp[-1].ttype); finish_function_body (yyvsp[-5].ttype); ! } break; case 100: ! #line 771 "parse.y" ! { expand_body (finish_function (0)); } break; case 101: ! #line 773 "parse.y" ! { expand_body (finish_function (0)); } break; case 102: ! #line 775 "parse.y" ! { } break; case 103: ! #line 780 "parse.y" ! { yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); } break; case 104: ! #line 782 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 105: ! #line 784 "parse.y" { yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype); yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ! } break; case 106: ! #line 788 "parse.y" ! { yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); } break; case 107: ! #line 790 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 108: ! #line 792 "parse.y" { yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype); yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ! } break; case 109: ! #line 796 "parse.y" ! { yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); } break; case 110: ! #line 798 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 111: ! #line 800 "parse.y" { yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype); yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ! } break; case 112: ! #line 804 "parse.y" ! { yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); } break; case 113: ! #line 806 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 114: ! #line 808 "parse.y" { yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype); yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ! } break; case 115: ! #line 815 "parse.y" { check_for_new_type ("return type", yyvsp[-1].ftype); if (!parse_begin_function_definition (yyvsp[-1].ftype.t, yyvsp[0].ttype)) ! YYERROR1; } break; case 116: ! #line 819 "parse.y" { if (!parse_begin_function_definition (yyvsp[-1].ftype.t, yyvsp[0].ttype)) ! YYERROR1; } break; case 117: ! #line 822 "parse.y" { if (!parse_begin_function_definition (NULL_TREE, yyvsp[0].ttype)) ! YYERROR1; } break; case 118: ! #line 825 "parse.y" { if (!parse_begin_function_definition (yyvsp[-1].ftype.t, yyvsp[0].ttype)) ! YYERROR1; } break; case 119: ! #line 828 "parse.y" { if (!parse_begin_function_definition (NULL_TREE, yyvsp[0].ttype)) ! YYERROR1; } break; case 120: ! #line 836 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 121: ! #line 839 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-6].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 122: ! #line 841 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-3].ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 123: ! #line 843 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 124: ! #line 845 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 125: ! #line 847 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-3].ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 126: ! #line 853 "parse.y" { yyval.ttype = parse_method (yyvsp[0].ttype, yyvsp[-1].ftype.t, yyvsp[-1].ftype.lookups); rest_of_mdef: if (! yyval.ttype) YYERROR1; if (yychar == YYEMPTY) yychar = YYLEX; ! snarf_method (yyval.ttype); } break; case 127: ! #line 861 "parse.y" { yyval.ttype = parse_method (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ! goto rest_of_mdef; } break; case 128: ! #line 864 "parse.y" ! { yyval.ttype = parse_method (yyvsp[0].ttype, yyvsp[-1].ftype.t, yyvsp[-1].ftype.lookups); goto rest_of_mdef;} break; case 129: ! #line 866 "parse.y" ! { yyval.ttype = parse_method (yyvsp[0].ttype, yyvsp[-1].ftype.t, yyvsp[-1].ftype.lookups); goto rest_of_mdef;} break; case 130: ! #line 868 "parse.y" { yyval.ttype = parse_method (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ! goto rest_of_mdef; } break; case 131: ! #line 871 "parse.y" ! { yyval.ttype = parse_method (yyvsp[0].ttype, yyvsp[-1].ftype.t, yyvsp[-1].ftype.lookups); goto rest_of_mdef;} break; case 132: ! #line 873 "parse.y" { yyval.ttype = parse_method (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ! goto rest_of_mdef; } break; case 133: ! #line 879 "parse.y" { yyval.ttype = yyvsp[0].ttype; ! } break; case 134: ! #line 886 "parse.y" ! { finish_named_return_value (yyval.ttype, yyvsp[0].ttype); } break; case 135: ! #line 888 "parse.y" ! { finish_named_return_value (yyval.ttype, yyvsp[-1].ttype); } break; case 136: ! #line 890 "parse.y" ! { finish_named_return_value (yyval.ttype, NULL_TREE); } break; case 137: ! #line 894 "parse.y" ! { begin_mem_initializers (); } break; case 138: ! #line 895 "parse.y" { if (yyvsp[0].ftype.new_type_flag == 0) error ("no base or member initializers given following ':'"); finish_mem_initializers (yyvsp[0].ftype.t); ! } break; case 139: ! #line 904 "parse.y" { yyval.ttype = begin_function_body (); ! } break; case 140: ! #line 911 "parse.y" { yyval.ftype.new_type_flag = 0; yyval.ftype.t = NULL_TREE; ! } break; case 141: ! #line 916 "parse.y" { yyval.ftype.new_type_flag = 1; yyval.ftype.t = yyvsp[0].ttype; ! } break; case 142: ! #line 921 "parse.y" { if (yyvsp[0].ttype) { --- 5617,6106 ---- if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE && lastiddecl) yyvsp[-1].ttype = lastiddecl; do_using_directive (yyvsp[-1].ttype); ! ;} break; case 42: ! #line 618 "parse.y" { if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype; ! ;} break; case 43: ! #line 624 "parse.y" { yyval.ttype = yyvsp[-1].ttype; if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype; ! ;} break; case 46: ! #line 636 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 47: ! #line 638 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 48: ! #line 643 "parse.y" ! { push_lang_context (yyvsp[0].ttype); ;} break; case 49: ! #line 645 "parse.y" { if (current_lang_name != yyvsp[0].ttype) error ("use of linkage spec `%D' is different from previous spec `%D'", yyvsp[0].ttype, current_lang_name); ! pop_lang_context (); push_lang_context (yyvsp[0].ttype); ;} break; case 50: ! #line 652 "parse.y" ! { begin_template_parm_list (); ;} break; case 51: ! #line 654 "parse.y" ! { yyval.ttype = end_template_parm_list (yyvsp[-1].ttype); ;} break; case 52: ! #line 659 "parse.y" { begin_specialization(); ! yyval.ttype = NULL_TREE; ;} break; case 55: ! #line 670 "parse.y" ! { yyval.ttype = process_template_parm (NULL_TREE, yyvsp[0].ttype); ;} break; case 56: ! #line 672 "parse.y" ! { yyval.ttype = process_template_parm (yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; case 57: ! #line 677 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 58: ! #line 679 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 59: ! #line 684 "parse.y" ! { yyval.ttype = finish_template_type_parm (yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 60: ! #line 686 "parse.y" ! { yyval.ttype = finish_template_type_parm (class_type_node, yyvsp[0].ttype); ;} break; case 61: ! #line 691 "parse.y" ! { yyval.ttype = finish_template_template_parm (yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 62: ! #line 703 "parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;} break; case 63: ! #line 705 "parse.y" ! { yyval.ttype = build_tree_list (groktypename (yyvsp[0].ftype.t), yyvsp[-2].ttype); ;} break; case 64: ! #line 707 "parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ;} break; case 65: ! #line 709 "parse.y" ! { yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-2].ftype.t); ;} break; case 66: ! #line 711 "parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;} break; case 67: ! #line 713 "parse.y" { yyvsp[0].ttype = check_template_template_default_arg (yyvsp[0].ttype); yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype); ! ;} break; case 68: ! #line 721 "parse.y" ! { finish_template_decl (yyvsp[-1].ttype); ;} break; case 69: ! #line 723 "parse.y" ! { finish_template_decl (yyvsp[-1].ttype); ;} break; case 70: ! #line 728 "parse.y" ! { do_pending_inlines (); ;} break; case 71: ! #line 730 "parse.y" ! { do_pending_inlines (); ;} break; case 72: ! #line 732 "parse.y" ! { do_pending_inlines (); ;} break; case 73: ! #line 734 "parse.y" { do_pending_inlines (); ! pop_lang_context (); ;} break; case 74: ! #line 737 "parse.y" { do_pending_inlines (); ! pop_lang_context (); ;} break; case 75: ! #line 740 "parse.y" ! { pedantic = yyvsp[-1].itype; ;} break; case 77: ! #line 746 "parse.y" ! {;} break; case 78: ! #line 748 "parse.y" ! { note_list_got_semicolon (yyvsp[-2].ftype.t); ;} break; case 79: ! #line 750 "parse.y" { if (yyvsp[-1].ftype.t != error_mark_node) { maybe_process_partial_specialization (yyvsp[-1].ftype.t); note_got_semicolon (yyvsp[-1].ftype.t); } ! ;} break; case 81: ! #line 762 "parse.y" ! {;} break; case 82: ! #line 764 "parse.y" ! { note_list_got_semicolon (yyvsp[-2].ftype.t); ;} break; case 83: ! #line 766 "parse.y" ! { pedwarn ("empty declaration"); ;} break; case 85: ! #line 769 "parse.y" { tree t, attrs; split_specs_attrs (yyvsp[-1].ftype.t, &t, &attrs); shadow_tag (t); note_list_got_semicolon (yyvsp[-1].ftype.t); ! ;} break; case 88: ! #line 778 "parse.y" ! { end_input (); ;} break; case 98: ! #line 804 "parse.y" ! { yyval.ttype = begin_compound_stmt (/*has_no_scope=*/1); ;} break; case 99: ! #line 806 "parse.y" { STMT_LINENO (yyvsp[-1].ttype) = yyvsp[-3].itype; finish_compound_stmt (/*has_no_scope=*/1, yyvsp[-1].ttype); finish_function_body (yyvsp[-5].ttype); ! ;} break; case 100: ! #line 815 "parse.y" ! { expand_body (finish_function (0)); ;} break; case 101: ! #line 817 "parse.y" ! { expand_body (finish_function (0)); ;} break; case 102: ! #line 819 "parse.y" ! { ;} break; case 103: ! #line 824 "parse.y" ! { yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;} break; case 104: ! #line 826 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 105: ! #line 828 "parse.y" { yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype); yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ! ;} break; case 106: ! #line 832 "parse.y" ! { yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;} break; case 107: ! #line 834 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 108: ! #line 836 "parse.y" { yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype); yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ! ;} break; case 109: ! #line 840 "parse.y" ! { yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;} break; case 110: ! #line 842 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 111: ! #line 844 "parse.y" { yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype); yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ! ;} break; case 112: ! #line 848 "parse.y" ! { yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;} break; case 113: ! #line 850 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 114: ! #line 852 "parse.y" { yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype); yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ! ;} break; case 115: ! #line 859 "parse.y" { check_for_new_type ("return type", yyvsp[-1].ftype); if (!parse_begin_function_definition (yyvsp[-1].ftype.t, yyvsp[0].ttype)) ! YYERROR1; ;} break; case 116: ! #line 863 "parse.y" { if (!parse_begin_function_definition (yyvsp[-1].ftype.t, yyvsp[0].ttype)) ! YYERROR1; ;} break; case 117: ! #line 866 "parse.y" { if (!parse_begin_function_definition (NULL_TREE, yyvsp[0].ttype)) ! YYERROR1; ;} break; case 118: ! #line 869 "parse.y" { if (!parse_begin_function_definition (yyvsp[-1].ftype.t, yyvsp[0].ttype)) ! YYERROR1; ;} break; case 119: ! #line 872 "parse.y" { if (!parse_begin_function_definition (NULL_TREE, yyvsp[0].ttype)) ! YYERROR1; ;} break; case 120: ! #line 881 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 121: ! #line 884 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-6].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 122: ! #line 886 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-3].ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 123: ! #line 888 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 124: ! #line 890 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 125: ! #line 892 "parse.y" ! { yyval.ttype = make_call_declarator (yyvsp[-3].ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 126: ! #line 899 "parse.y" { yyval.ttype = parse_method (yyvsp[0].ttype, yyvsp[-1].ftype.t, yyvsp[-1].ftype.lookups); rest_of_mdef: if (! yyval.ttype) YYERROR1; if (yychar == YYEMPTY) yychar = YYLEX; ! snarf_method (yyval.ttype); ;} break; case 127: ! #line 907 "parse.y" { yyval.ttype = parse_method (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ! goto rest_of_mdef; ;} break; case 128: ! #line 910 "parse.y" ! { yyval.ttype = parse_method (yyvsp[0].ttype, yyvsp[-1].ftype.t, yyvsp[-1].ftype.lookups); goto rest_of_mdef;;} break; case 129: ! #line 912 "parse.y" ! { yyval.ttype = parse_method (yyvsp[0].ttype, yyvsp[-1].ftype.t, yyvsp[-1].ftype.lookups); goto rest_of_mdef;;} break; case 130: ! #line 914 "parse.y" { yyval.ttype = parse_method (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ! goto rest_of_mdef; ;} break; case 131: ! #line 917 "parse.y" ! { yyval.ttype = parse_method (yyvsp[0].ttype, yyvsp[-1].ftype.t, yyvsp[-1].ftype.lookups); goto rest_of_mdef;;} break; case 132: ! #line 919 "parse.y" { yyval.ttype = parse_method (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ! goto rest_of_mdef; ;} break; case 133: ! #line 925 "parse.y" { yyval.ttype = yyvsp[0].ttype; ! ;} break; case 134: ! #line 932 "parse.y" ! { finish_named_return_value (yyval.ttype, yyvsp[0].ttype); ;} break; case 135: ! #line 934 "parse.y" ! { finish_named_return_value (yyval.ttype, yyvsp[-1].ttype); ;} break; case 136: ! #line 936 "parse.y" ! { finish_named_return_value (yyval.ttype, NULL_TREE); ;} break; case 137: ! #line 940 "parse.y" ! { begin_mem_initializers (); ;} break; case 138: ! #line 941 "parse.y" { if (yyvsp[0].ftype.new_type_flag == 0) error ("no base or member initializers given following ':'"); finish_mem_initializers (yyvsp[0].ftype.t); ! ;} break; case 139: ! #line 950 "parse.y" { yyval.ttype = begin_function_body (); ! ;} break; case 140: ! #line 957 "parse.y" { yyval.ftype.new_type_flag = 0; yyval.ftype.t = NULL_TREE; ! ;} break; case 141: ! #line 962 "parse.y" { yyval.ftype.new_type_flag = 1; yyval.ftype.t = yyvsp[0].ttype; ! ;} break; case 142: ! #line 967 "parse.y" { if (yyvsp[0].ttype) { *************** yyreduce: *** 6056,6277 **** } else yyval.ftype = yyvsp[-2].ftype; ! } break; case 144: ! #line 936 "parse.y" { if (current_class_name) pedwarn ("anachronistic old style base class initializer"); yyval.ttype = expand_member_init (NULL_TREE); in_base_initializer = yyval.ttype && !DECL_P (yyval.ttype); ! } break; case 145: ! #line 943 "parse.y" { yyval.ttype = expand_member_init (yyvsp[0].ttype); ! in_base_initializer = yyval.ttype && !DECL_P (yyval.ttype); } break; case 146: ! #line 946 "parse.y" { yyval.ttype = expand_member_init (yyvsp[0].ttype); ! in_base_initializer = yyval.ttype && !DECL_P (yyval.ttype); } break; case 147: ! #line 949 "parse.y" { yyval.ttype = expand_member_init (yyvsp[0].ttype); ! in_base_initializer = yyval.ttype && !DECL_P (yyval.ttype); } break; case 148: ! #line 955 "parse.y" { in_base_initializer = 0; ! yyval.ttype = yyvsp[-3].ttype ? build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype) : NULL_TREE; } break; case 149: ! #line 958 "parse.y" { in_base_initializer = 0; ! yyval.ttype = yyvsp[-1].ttype ? build_tree_list (yyvsp[-1].ttype, void_type_node) : NULL_TREE; } break; case 150: ! #line 961 "parse.y" { in_base_initializer = 0; ! yyval.ttype = NULL_TREE; } break; case 162: ! #line 987 "parse.y" { do_type_instantiation (yyvsp[-1].ftype.t, NULL_TREE, 1); ! yyungetc (';', 1); } break; case 164: ! #line 991 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ftype.t); ! parse_decl_instantiation (specs, yyvsp[0].ttype, NULL_TREE); } break; case 166: ! #line 995 "parse.y" ! { parse_decl_instantiation (NULL_TREE, yyvsp[0].ttype, NULL_TREE); } break; case 168: ! #line 998 "parse.y" ! { parse_decl_instantiation (NULL_TREE, yyvsp[0].ttype, NULL_TREE); } break; case 170: ! #line 1001 "parse.y" { do_type_instantiation (yyvsp[-1].ftype.t, yyvsp[-4].ttype, 1); ! yyungetc (';', 1); } break; case 171: ! #line 1004 "parse.y" ! {} break; case 172: ! #line 1007 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ftype.t); ! parse_decl_instantiation (specs, yyvsp[0].ttype, yyvsp[-4].ttype); } break; case 173: ! #line 1010 "parse.y" ! {} break; case 174: ! #line 1012 "parse.y" ! { parse_decl_instantiation (NULL_TREE, yyvsp[0].ttype, yyvsp[-3].ttype); } break; case 175: ! #line 1014 "parse.y" ! {} break; case 176: ! #line 1016 "parse.y" ! { parse_decl_instantiation (NULL_TREE, yyvsp[0].ttype, yyvsp[-3].ttype); } break; case 177: ! #line 1018 "parse.y" ! {} break; case 178: ! #line 1022 "parse.y" ! { begin_explicit_instantiation(); } break; case 179: ! #line 1026 "parse.y" ! { end_explicit_instantiation(); } break; case 180: ! #line 1034 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 181: ! #line 1037 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 184: ! #line 1045 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 185: ! #line 1051 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 186: ! #line 1055 "parse.y" { if (yychar == YYEMPTY) yychar = YYLEX; yyval.ttype = finish_template_type (yyvsp[-3].ttype, yyvsp[-1].ttype, yychar == SCOPE); ! } break; case 188: ! #line 1067 "parse.y" { /* Handle `Class>' without space in the `>>' */ pedwarn ("`>>' should be `> >' in template class name"); yyungetc ('>', 1); ! } break; case 189: ! #line 1076 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 191: ! #line 1082 "parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); } break; case 192: ! #line 1084 "parse.y" ! { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); } break; case 193: ! #line 1088 "parse.y" ! { ++class_template_ok_as_expr; } break; case 194: ! #line 1090 "parse.y" { --class_template_ok_as_expr; yyval.ttype = yyvsp[0].ttype; ! } break; case 195: ! #line 1098 "parse.y" ! { yyval.ttype = groktypename (yyvsp[0].ftype.t); } break; case 196: ! #line 1100 "parse.y" { yyval.ttype = lastiddecl; if (DECL_TEMPLATE_TEMPLATE_PARM_P (yyval.ttype)) yyval.ttype = TREE_TYPE (yyval.ttype); ! } break; case 197: ! #line 1106 "parse.y" { yyval.ttype = lastiddecl; if (DECL_TEMPLATE_TEMPLATE_PARM_P (yyval.ttype)) yyval.ttype = TREE_TYPE (yyval.ttype); ! } break; case 199: ! #line 1113 "parse.y" { if (!processing_template_decl) { --- 6110,6331 ---- } else yyval.ftype = yyvsp[-2].ftype; ! ;} break; case 144: ! #line 982 "parse.y" { if (current_class_name) pedwarn ("anachronistic old style base class initializer"); yyval.ttype = expand_member_init (NULL_TREE); in_base_initializer = yyval.ttype && !DECL_P (yyval.ttype); ! ;} break; case 145: ! #line 989 "parse.y" { yyval.ttype = expand_member_init (yyvsp[0].ttype); ! in_base_initializer = yyval.ttype && !DECL_P (yyval.ttype); ;} break; case 146: ! #line 992 "parse.y" { yyval.ttype = expand_member_init (yyvsp[0].ttype); ! in_base_initializer = yyval.ttype && !DECL_P (yyval.ttype); ;} break; case 147: ! #line 995 "parse.y" { yyval.ttype = expand_member_init (yyvsp[0].ttype); ! in_base_initializer = yyval.ttype && !DECL_P (yyval.ttype); ;} break; case 148: ! #line 1001 "parse.y" { in_base_initializer = 0; ! yyval.ttype = yyvsp[-3].ttype ? build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype) : NULL_TREE; ;} break; case 149: ! #line 1004 "parse.y" { in_base_initializer = 0; ! yyval.ttype = yyvsp[-1].ttype ? build_tree_list (yyvsp[-1].ttype, void_type_node) : NULL_TREE; ;} break; case 150: ! #line 1007 "parse.y" { in_base_initializer = 0; ! yyval.ttype = NULL_TREE; ;} break; case 162: ! #line 1033 "parse.y" { do_type_instantiation (yyvsp[-1].ftype.t, NULL_TREE, 1); ! yyungetc (';', 1); ;} break; case 164: ! #line 1037 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ftype.t); ! parse_decl_instantiation (specs, yyvsp[0].ttype, NULL_TREE); ;} break; case 166: ! #line 1041 "parse.y" ! { parse_decl_instantiation (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;} break; case 168: ! #line 1044 "parse.y" ! { parse_decl_instantiation (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;} break; case 170: ! #line 1047 "parse.y" { do_type_instantiation (yyvsp[-1].ftype.t, yyvsp[-4].ttype, 1); ! yyungetc (';', 1); ;} break; case 171: ! #line 1050 "parse.y" ! {;} break; case 172: ! #line 1053 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ftype.t); ! parse_decl_instantiation (specs, yyvsp[0].ttype, yyvsp[-4].ttype); ;} break; case 173: ! #line 1056 "parse.y" ! {;} break; case 174: ! #line 1058 "parse.y" ! { parse_decl_instantiation (NULL_TREE, yyvsp[0].ttype, yyvsp[-3].ttype); ;} break; case 175: ! #line 1060 "parse.y" ! {;} break; case 176: ! #line 1062 "parse.y" ! { parse_decl_instantiation (NULL_TREE, yyvsp[0].ttype, yyvsp[-3].ttype); ;} break; case 177: ! #line 1064 "parse.y" ! {;} break; case 178: ! #line 1068 "parse.y" ! { begin_explicit_instantiation(); ;} break; case 179: ! #line 1072 "parse.y" ! { end_explicit_instantiation(); ;} break; case 180: ! #line 1082 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 181: ! #line 1085 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 184: ! #line 1093 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 185: ! #line 1099 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 186: ! #line 1103 "parse.y" { if (yychar == YYEMPTY) yychar = YYLEX; yyval.ttype = finish_template_type (yyvsp[-3].ttype, yyvsp[-1].ttype, yychar == SCOPE); ! ;} break; case 188: ! #line 1115 "parse.y" { /* Handle `Class>' without space in the `>>' */ pedwarn ("`>>' should be `> >' in template class name"); yyungetc ('>', 1); ! ;} break; case 189: ! #line 1124 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 191: ! #line 1130 "parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;} break; case 192: ! #line 1132 "parse.y" ! { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;} break; case 193: ! #line 1136 "parse.y" ! { ++class_template_ok_as_expr; ;} break; case 194: ! #line 1138 "parse.y" { --class_template_ok_as_expr; yyval.ttype = yyvsp[0].ttype; ! ;} break; case 195: ! #line 1146 "parse.y" ! { yyval.ttype = groktypename (yyvsp[0].ftype.t); ;} break; case 196: ! #line 1148 "parse.y" { yyval.ttype = lastiddecl; if (DECL_TEMPLATE_TEMPLATE_PARM_P (yyval.ttype)) yyval.ttype = TREE_TYPE (yyval.ttype); ! ;} break; case 197: ! #line 1154 "parse.y" { yyval.ttype = lastiddecl; if (DECL_TEMPLATE_TEMPLATE_PARM_P (yyval.ttype)) yyval.ttype = TREE_TYPE (yyval.ttype); ! ;} break; case 199: ! #line 1161 "parse.y" { if (!processing_template_decl) { *************** yyreduce: *** 6280,6354 **** } else yyval.ttype = make_unbound_class_template (yyvsp[-2].ttype, yyvsp[0].ttype, tf_error | tf_parsing); ! } break; case 200: ! #line 1126 "parse.y" ! { yyval.code = NEGATE_EXPR; } break; case 201: ! #line 1128 "parse.y" ! { yyval.code = CONVERT_EXPR; } break; case 202: ! #line 1130 "parse.y" ! { yyval.code = PREINCREMENT_EXPR; } break; case 203: ! #line 1132 "parse.y" ! { yyval.code = PREDECREMENT_EXPR; } break; case 204: ! #line 1134 "parse.y" ! { yyval.code = TRUTH_NOT_EXPR; } break; case 205: ! #line 1139 "parse.y" ! { yyval.ttype = build_x_compound_expr (yyval.ttype); } break; case 207: ! #line 1145 "parse.y" { error ("ISO C++ forbids an empty condition for `%s'", cond_stmt_keyword); ! yyval.ttype = integer_zero_node; } break; case 208: ! #line 1149 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; } break; case 209: ! #line 1154 "parse.y" { error ("ISO C++ forbids an empty condition for `%s'", cond_stmt_keyword); ! yyval.ttype = integer_zero_node; } break; case 210: ! #line 1158 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; } break; case 211: ! #line 1163 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 213: ! #line 1166 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 214: ! #line 1171 "parse.y" { { tree d; for (d = getdecls (); d; d = TREE_CHAIN (d)) --- 6334,6408 ---- } else yyval.ttype = make_unbound_class_template (yyvsp[-2].ttype, yyvsp[0].ttype, tf_error | tf_parsing); ! ;} break; case 200: ! #line 1174 "parse.y" ! { yyval.code = NEGATE_EXPR; ;} break; case 201: ! #line 1176 "parse.y" ! { yyval.code = CONVERT_EXPR; ;} break; case 202: ! #line 1178 "parse.y" ! { yyval.code = PREINCREMENT_EXPR; ;} break; case 203: ! #line 1180 "parse.y" ! { yyval.code = PREDECREMENT_EXPR; ;} break; case 204: ! #line 1182 "parse.y" ! { yyval.code = TRUTH_NOT_EXPR; ;} break; case 205: ! #line 1187 "parse.y" ! { yyval.ttype = build_x_compound_expr (yyval.ttype); ;} break; case 207: ! #line 1193 "parse.y" { error ("ISO C++ forbids an empty condition for `%s'", cond_stmt_keyword); ! yyval.ttype = integer_zero_node; ;} break; case 208: ! #line 1197 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; ;} break; case 209: ! #line 1202 "parse.y" { error ("ISO C++ forbids an empty condition for `%s'", cond_stmt_keyword); ! yyval.ttype = integer_zero_node; ;} break; case 210: ! #line 1206 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; ;} break; case 211: ! #line 1211 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 213: ! #line 1214 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 214: ! #line 1219 "parse.y" { { tree d; for (d = getdecls (); d; d = TREE_CHAIN (d)) *************** yyreduce: *** 6362,6607 **** } current_declspecs = yyvsp[-4].ftype.t; yyval.ttype = parse_decl (yyvsp[-3].ttype, yyvsp[-1].ttype, 1); ! } break; case 215: ! #line 1186 "parse.y" { parse_end_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-3].ttype); yyval.ttype = convert_from_reference (yyvsp[-1].ttype); if (TREE_CODE (TREE_TYPE (yyval.ttype)) == ARRAY_TYPE) error ("definition of array `%#D' in condition", yyval.ttype); ! } break; case 221: ! #line 1204 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, ! build_tree_list (NULL_TREE, yyvsp[0].ttype)); } break; case 222: ! #line 1207 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, ! build_tree_list (NULL_TREE, error_mark_node)); } break; case 223: ! #line 1210 "parse.y" ! { chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); } break; case 224: ! #line 1212 "parse.y" ! { chainon (yyval.ttype, build_tree_list (NULL_TREE, error_mark_node)); } break; case 225: ! #line 1217 "parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); } break; case 227: ! #line 1223 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 228: ! #line 1226 "parse.y" { yyval.ttype = yyvsp[0].ttype; ! pedantic = yyvsp[-1].itype; } break; case 229: ! #line 1229 "parse.y" ! { yyval.ttype = build_x_indirect_ref (yyvsp[0].ttype, "unary *"); } break; case 230: ! #line 1231 "parse.y" ! { yyval.ttype = build_x_unary_op (ADDR_EXPR, yyvsp[0].ttype); } break; case 231: ! #line 1233 "parse.y" ! { yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, yyvsp[0].ttype); } break; case 232: ! #line 1235 "parse.y" ! { yyval.ttype = finish_unary_op_expr (yyvsp[-1].code, yyvsp[0].ttype); } break; case 233: ! #line 1238 "parse.y" ! { yyval.ttype = finish_label_address_expr (yyvsp[0].ttype); } break; case 234: ! #line 1240 "parse.y" { yyval.ttype = finish_sizeof (yyvsp[0].ttype); ! skip_evaluation--; } break; case 235: ! #line 1243 "parse.y" { yyval.ttype = finish_sizeof (groktypename (yyvsp[-1].ftype.t)); check_for_new_type ("sizeof", yyvsp[-1].ftype); ! skip_evaluation--; } break; case 236: ! #line 1247 "parse.y" { yyval.ttype = finish_alignof (yyvsp[0].ttype); ! skip_evaluation--; } break; case 237: ! #line 1250 "parse.y" { yyval.ttype = finish_alignof (groktypename (yyvsp[-1].ftype.t)); check_for_new_type ("alignof", yyvsp[-1].ftype); ! skip_evaluation--; } break; case 238: ! #line 1256 "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 239: ! #line 1259 "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 240: ! #line 1262 "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 241: ! #line 1265 "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 242: ! #line 1269 "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 243: ! #line 1273 "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 244: ! #line 1276 "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 245: ! #line 1279 "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 246: ! #line 1283 "parse.y" ! { yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 0, yyvsp[-1].itype); } break; case 247: ! #line 1285 "parse.y" { yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 1, yyvsp[-3].itype); if (yychar == YYEMPTY) ! yychar = YYLEX; } break; case 248: ! #line 1289 "parse.y" { yyval.ttype = delete_sanity (yyvsp[0].ttype, yyvsp[-2].ttype, 2, yyvsp[-4].itype); if (yychar == YYEMPTY) ! yychar = YYLEX; } break; case 249: ! #line 1293 "parse.y" ! { yyval.ttype = build_x_unary_op (REALPART_EXPR, yyvsp[0].ttype); } break; case 250: ! #line 1295 "parse.y" ! { yyval.ttype = build_x_unary_op (IMAGPART_EXPR, yyvsp[0].ttype); } break; case 251: ! #line 1300 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; } break; case 252: ! #line 1302 "parse.y" { pedwarn ("old style placement syntax, use () instead"); ! yyval.ttype = yyvsp[-1].ttype; } break; case 253: ! #line 1308 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; } break; case 254: ! #line 1310 "parse.y" ! { yyval.ttype = void_zero_node; } break; case 255: ! #line 1312 "parse.y" { error ("`%T' is not a valid expression", yyvsp[-1].ftype.t); yyval.ttype = error_mark_node; ! } break; case 256: ! #line 1317 "parse.y" { /* This was previously allowed as an extension, but was removed in G++ 3.3. */ error ("initialization of new expression with `='"); yyval.ttype = error_mark_node; ! } break; case 257: ! #line 1328 "parse.y" { yyvsp[-1].ftype.t = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), 0); 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 258: ! #line 1332 "parse.y" { yyvsp[-1].ftype.t = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), 0); 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 260: ! #line 1340 "parse.y" ! { yyval.ttype = reparse_absdcl_as_casts (yyval.ttype, yyvsp[0].ttype); } break; case 261: ! #line 1342 "parse.y" { tree init = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype)); --- 6416,6661 ---- } current_declspecs = yyvsp[-4].ftype.t; yyval.ttype = parse_decl (yyvsp[-3].ttype, yyvsp[-1].ttype, 1); ! ;} break; case 215: ! #line 1234 "parse.y" { parse_end_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-3].ttype); yyval.ttype = convert_from_reference (yyvsp[-1].ttype); if (TREE_CODE (TREE_TYPE (yyval.ttype)) == ARRAY_TYPE) error ("definition of array `%#D' in condition", yyval.ttype); ! ;} break; case 221: ! #line 1252 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, ! build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;} break; case 222: ! #line 1255 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, ! build_tree_list (NULL_TREE, error_mark_node)); ;} break; case 223: ! #line 1258 "parse.y" ! { chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;} break; case 224: ! #line 1260 "parse.y" ! { chainon (yyval.ttype, build_tree_list (NULL_TREE, error_mark_node)); ;} break; case 225: ! #line 1265 "parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;} break; case 227: ! #line 1271 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 228: ! #line 1274 "parse.y" { yyval.ttype = yyvsp[0].ttype; ! pedantic = yyvsp[-1].itype; ;} break; case 229: ! #line 1277 "parse.y" ! { yyval.ttype = build_x_indirect_ref (yyvsp[0].ttype, "unary *"); ;} break; case 230: ! #line 1279 "parse.y" ! { yyval.ttype = build_x_unary_op (ADDR_EXPR, yyvsp[0].ttype); ;} break; case 231: ! #line 1281 "parse.y" ! { yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, yyvsp[0].ttype); ;} break; case 232: ! #line 1283 "parse.y" ! { yyval.ttype = finish_unary_op_expr (yyvsp[-1].code, yyvsp[0].ttype); ;} break; case 233: ! #line 1286 "parse.y" ! { yyval.ttype = finish_label_address_expr (yyvsp[0].ttype); ;} break; case 234: ! #line 1288 "parse.y" { yyval.ttype = finish_sizeof (yyvsp[0].ttype); ! skip_evaluation--; ;} break; case 235: ! #line 1291 "parse.y" { yyval.ttype = finish_sizeof (groktypename (yyvsp[-1].ftype.t)); check_for_new_type ("sizeof", yyvsp[-1].ftype); ! skip_evaluation--; ;} break; case 236: ! #line 1295 "parse.y" { yyval.ttype = finish_alignof (yyvsp[0].ttype); ! skip_evaluation--; ;} break; case 237: ! #line 1298 "parse.y" { yyval.ttype = finish_alignof (groktypename (yyvsp[-1].ftype.t)); check_for_new_type ("alignof", yyvsp[-1].ftype); ! skip_evaluation--; ;} break; case 238: ! #line 1305 "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 239: ! #line 1308 "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 240: ! #line 1311 "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 241: ! #line 1314 "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 242: ! #line 1318 "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 243: ! #line 1322 "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 244: ! #line 1325 "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 245: ! #line 1328 "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 246: ! #line 1332 "parse.y" ! { yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 0, yyvsp[-1].itype); ;} break; case 247: ! #line 1334 "parse.y" { yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 1, yyvsp[-3].itype); if (yychar == YYEMPTY) ! yychar = YYLEX; ;} break; case 248: ! #line 1338 "parse.y" { yyval.ttype = delete_sanity (yyvsp[0].ttype, yyvsp[-2].ttype, 2, yyvsp[-4].itype); if (yychar == YYEMPTY) ! yychar = YYLEX; ;} break; case 249: ! #line 1342 "parse.y" ! { yyval.ttype = build_x_unary_op (REALPART_EXPR, yyvsp[0].ttype); ;} break; case 250: ! #line 1344 "parse.y" ! { yyval.ttype = build_x_unary_op (IMAGPART_EXPR, yyvsp[0].ttype); ;} break; case 251: ! #line 1349 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; ;} break; case 252: ! #line 1351 "parse.y" { pedwarn ("old style placement syntax, use () instead"); ! yyval.ttype = yyvsp[-1].ttype; ;} break; case 253: ! #line 1357 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; ;} break; case 254: ! #line 1359 "parse.y" ! { yyval.ttype = void_zero_node; ;} break; case 255: ! #line 1361 "parse.y" { error ("`%T' is not a valid expression", yyvsp[-1].ftype.t); yyval.ttype = error_mark_node; ! ;} break; case 256: ! #line 1366 "parse.y" { /* This was previously allowed as an extension, but was removed in G++ 3.3. */ error ("initialization of new expression with `='"); yyval.ttype = error_mark_node; ! ;} break; case 257: ! #line 1377 "parse.y" { yyvsp[-1].ftype.t = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), 0); 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 258: ! #line 1381 "parse.y" { yyvsp[-1].ftype.t = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), 0); 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 260: ! #line 1389 "parse.y" ! { yyval.ttype = reparse_absdcl_as_casts (yyval.ttype, yyvsp[0].ttype); ;} break; case 261: ! #line 1391 "parse.y" { tree init = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype)); *************** yyreduce: *** 6611,6870 **** TREE_HAS_CONSTRUCTOR (init) = 1; yyval.ttype = reparse_absdcl_as_casts (yyval.ttype, init); ! } break; case 263: ! #line 1358 "parse.y" ! { yyval.ttype = build_x_binary_op (MEMBER_REF, yyval.ttype, yyvsp[0].ttype); } break; case 264: ! #line 1360 "parse.y" ! { yyval.ttype = build_m_component_ref (yyval.ttype, yyvsp[0].ttype); } break; case 265: ! #line 1362 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 266: ! #line 1364 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 267: ! #line 1366 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 268: ! #line 1368 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 269: ! #line 1370 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 270: ! #line 1372 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 271: ! #line 1374 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 272: ! #line 1376 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 273: ! #line 1378 "parse.y" ! { yyval.ttype = build_x_binary_op (LT_EXPR, yyval.ttype, yyvsp[0].ttype); } break; case 274: ! #line 1380 "parse.y" ! { yyval.ttype = build_x_binary_op (GT_EXPR, yyval.ttype, yyvsp[0].ttype); } break; case 275: ! #line 1382 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 276: ! #line 1384 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 277: ! #line 1386 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 278: ! #line 1388 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 279: ! #line 1390 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 280: ! #line 1392 "parse.y" ! { yyval.ttype = build_x_binary_op (TRUTH_ANDIF_EXPR, yyval.ttype, yyvsp[0].ttype); } break; case 281: ! #line 1394 "parse.y" ! { yyval.ttype = build_x_binary_op (TRUTH_ORIF_EXPR, yyval.ttype, yyvsp[0].ttype); } break; case 282: ! #line 1396 "parse.y" ! { yyval.ttype = build_x_conditional_expr (yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); } break; case 283: ! #line 1398 "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 284: ! #line 1402 "parse.y" ! { yyval.ttype = build_x_modify_expr (yyval.ttype, yyvsp[-1].code, yyvsp[0].ttype); } break; case 285: ! #line 1404 "parse.y" ! { yyval.ttype = build_throw (NULL_TREE); } break; case 286: ! #line 1406 "parse.y" ! { yyval.ttype = build_throw (yyvsp[0].ttype); } break; case 288: ! #line 1413 "parse.y" ! { yyval.ttype = build_x_binary_op (MEMBER_REF, yyval.ttype, yyvsp[0].ttype); } break; case 289: ! #line 1415 "parse.y" ! { yyval.ttype = build_m_component_ref (yyval.ttype, yyvsp[0].ttype); } break; case 290: ! #line 1417 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 291: ! #line 1419 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 292: ! #line 1421 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 293: ! #line 1423 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 294: ! #line 1425 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 295: ! #line 1427 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 296: ! #line 1429 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 297: ! #line 1431 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 298: ! #line 1433 "parse.y" ! { yyval.ttype = build_x_binary_op (LT_EXPR, yyval.ttype, yyvsp[0].ttype); } break; case 299: ! #line 1435 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 300: ! #line 1437 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 301: ! #line 1439 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 302: ! #line 1441 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 303: ! #line 1443 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); } break; case 304: ! #line 1445 "parse.y" ! { yyval.ttype = build_x_binary_op (TRUTH_ANDIF_EXPR, yyval.ttype, yyvsp[0].ttype); } break; case 305: ! #line 1447 "parse.y" ! { yyval.ttype = build_x_binary_op (TRUTH_ORIF_EXPR, yyval.ttype, yyvsp[0].ttype); } break; case 306: ! #line 1449 "parse.y" ! { yyval.ttype = build_x_conditional_expr (yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); } break; case 307: ! #line 1451 "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 308: ! #line 1455 "parse.y" ! { yyval.ttype = build_x_modify_expr (yyval.ttype, yyvsp[-1].code, yyvsp[0].ttype); } break; case 309: ! #line 1457 "parse.y" ! { yyval.ttype = build_throw (NULL_TREE); } break; case 310: ! #line 1459 "parse.y" ! { yyval.ttype = build_throw (yyvsp[0].ttype); } break; case 311: ! #line 1464 "parse.y" ! { yyval.ttype = build_nt (BIT_NOT_EXPR, yyvsp[0].ttype); } break; case 312: ! #line 1466 "parse.y" ! { yyval.ttype = build_nt (BIT_NOT_EXPR, yyvsp[0].ttype); } break; case 318: ! #line 1475 "parse.y" { /* If lastiddecl is a BASELINK we're in an expression like S::f, so don't --- 6665,6924 ---- TREE_HAS_CONSTRUCTOR (init) = 1; yyval.ttype = reparse_absdcl_as_casts (yyval.ttype, init); ! ;} break; case 263: ! #line 1407 "parse.y" ! { yyval.ttype = build_x_binary_op (MEMBER_REF, yyval.ttype, yyvsp[0].ttype); ;} break; case 264: ! #line 1409 "parse.y" ! { yyval.ttype = build_m_component_ref (yyval.ttype, yyvsp[0].ttype); ;} break; case 265: ! #line 1411 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 266: ! #line 1413 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 267: ! #line 1415 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 268: ! #line 1417 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 269: ! #line 1419 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 270: ! #line 1421 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 271: ! #line 1423 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 272: ! #line 1425 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 273: ! #line 1427 "parse.y" ! { yyval.ttype = build_x_binary_op (LT_EXPR, yyval.ttype, yyvsp[0].ttype); ;} break; case 274: ! #line 1429 "parse.y" ! { yyval.ttype = build_x_binary_op (GT_EXPR, yyval.ttype, yyvsp[0].ttype); ;} break; case 275: ! #line 1431 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 276: ! #line 1433 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 277: ! #line 1435 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 278: ! #line 1437 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 279: ! #line 1439 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 280: ! #line 1441 "parse.y" ! { yyval.ttype = build_x_binary_op (TRUTH_ANDIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;} break; case 281: ! #line 1443 "parse.y" ! { yyval.ttype = build_x_binary_op (TRUTH_ORIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;} break; case 282: ! #line 1445 "parse.y" ! { yyval.ttype = build_x_conditional_expr (yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; case 283: ! #line 1447 "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 284: ! #line 1451 "parse.y" ! { yyval.ttype = build_x_modify_expr (yyval.ttype, yyvsp[-1].code, yyvsp[0].ttype); ;} break; case 285: ! #line 1453 "parse.y" ! { yyval.ttype = build_throw (NULL_TREE); ;} break; case 286: ! #line 1455 "parse.y" ! { yyval.ttype = build_throw (yyvsp[0].ttype); ;} break; case 288: ! #line 1462 "parse.y" ! { yyval.ttype = build_x_binary_op (MEMBER_REF, yyval.ttype, yyvsp[0].ttype); ;} break; case 289: ! #line 1464 "parse.y" ! { yyval.ttype = build_m_component_ref (yyval.ttype, yyvsp[0].ttype); ;} break; case 290: ! #line 1466 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 291: ! #line 1468 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 292: ! #line 1470 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 293: ! #line 1472 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 294: ! #line 1474 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 295: ! #line 1476 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 296: ! #line 1478 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 297: ! #line 1480 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 298: ! #line 1482 "parse.y" ! { yyval.ttype = build_x_binary_op (LT_EXPR, yyval.ttype, yyvsp[0].ttype); ;} break; case 299: ! #line 1484 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 300: ! #line 1486 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 301: ! #line 1488 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 302: ! #line 1490 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 303: ! #line 1492 "parse.y" ! { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;} break; case 304: ! #line 1494 "parse.y" ! { yyval.ttype = build_x_binary_op (TRUTH_ANDIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;} break; case 305: ! #line 1496 "parse.y" ! { yyval.ttype = build_x_binary_op (TRUTH_ORIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;} break; case 306: ! #line 1498 "parse.y" ! { yyval.ttype = build_x_conditional_expr (yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; case 307: ! #line 1500 "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 308: ! #line 1504 "parse.y" ! { yyval.ttype = build_x_modify_expr (yyval.ttype, yyvsp[-1].code, yyvsp[0].ttype); ;} break; case 309: ! #line 1506 "parse.y" ! { yyval.ttype = build_throw (NULL_TREE); ;} break; case 310: ! #line 1508 "parse.y" ! { yyval.ttype = build_throw (yyvsp[0].ttype); ;} break; case 311: ! #line 1513 "parse.y" ! { yyval.ttype = build_nt (BIT_NOT_EXPR, yyvsp[0].ttype); ;} break; case 312: ! #line 1515 "parse.y" ! { yyval.ttype = build_nt (BIT_NOT_EXPR, yyvsp[0].ttype); ;} break; case 318: ! #line 1524 "parse.y" { /* If lastiddecl is a BASELINK we're in an expression like S::f, so don't *************** yyreduce: *** 6874,6968 **** yyval.ttype = do_identifier (yyvsp[-1].ttype, 3, NULL_TREE); else yyval.ttype = yyvsp[-1].ttype; ! } break; case 319: ! #line 1489 "parse.y" { tree template_name = yyvsp[-2].ttype; if (TREE_CODE (template_name) == COMPONENT_REF) template_name = TREE_OPERAND (template_name, 1); yyval.ttype = lookup_template_function (template_name, yyvsp[-1].ttype); ! } break; case 320: ! #line 1496 "parse.y" { tree template_name = yyvsp[-2].ttype; if (TREE_CODE (template_name) == COMPONENT_REF) template_name = TREE_OPERAND (template_name, 1); yyval.ttype = lookup_template_function (template_name, yyvsp[-1].ttype); ! } break; case 321: ! #line 1506 "parse.y" ! { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); } break; case 322: ! #line 1508 "parse.y" ! { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); } break; case 323: ! #line 1511 "parse.y" ! { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); } break; case 328: ! #line 1523 "parse.y" { /* Provide support for '(' attributes '*' declarator ')' etc */ yyval.ttype = tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ! } break; case 330: ! #line 1533 "parse.y" ! { yyval.ttype = build_nt (INDIRECT_REF, yyvsp[0].ttype); } break; case 331: ! #line 1535 "parse.y" ! { yyval.ttype = build_nt (ADDR_EXPR, yyvsp[0].ttype); } break; case 332: ! #line 1537 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; } break; case 333: ! #line 1542 "parse.y" ! { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); } break; case 334: ! #line 1544 "parse.y" ! { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); } break; case 338: ! #line 1553 "parse.y" ! { yyval.ttype = finish_decl_parsing (yyvsp[-1].ttype); } break; case 339: ! #line 1558 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == BIT_NOT_EXPR) yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, TREE_OPERAND (yyvsp[0].ttype, 0)); else yyval.ttype = finish_id_expr (yyvsp[0].ttype); ! } break; case 342: ! #line 1567 "parse.y" { yyval.ttype = fix_string_type (yyval.ttype); /* fix_string_type doesn't set up TYPE_MAIN_VARIANT of --- 6928,7022 ---- yyval.ttype = do_identifier (yyvsp[-1].ttype, 3, NULL_TREE); else yyval.ttype = yyvsp[-1].ttype; ! ;} break; case 319: ! #line 1538 "parse.y" { tree template_name = yyvsp[-2].ttype; if (TREE_CODE (template_name) == COMPONENT_REF) template_name = TREE_OPERAND (template_name, 1); yyval.ttype = lookup_template_function (template_name, yyvsp[-1].ttype); ! ;} break; case 320: ! #line 1545 "parse.y" { tree template_name = yyvsp[-2].ttype; if (TREE_CODE (template_name) == COMPONENT_REF) template_name = TREE_OPERAND (template_name, 1); yyval.ttype = lookup_template_function (template_name, yyvsp[-1].ttype); ! ;} break; case 321: ! #line 1555 "parse.y" ! { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;} break; case 322: ! #line 1557 "parse.y" ! { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;} break; case 323: ! #line 1560 "parse.y" ! { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;} break; case 328: ! #line 1572 "parse.y" { /* Provide support for '(' attributes '*' declarator ')' etc */ yyval.ttype = tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ! ;} break; case 330: ! #line 1582 "parse.y" ! { yyval.ttype = build_nt (INDIRECT_REF, yyvsp[0].ttype); ;} break; case 331: ! #line 1584 "parse.y" ! { yyval.ttype = build_nt (ADDR_EXPR, yyvsp[0].ttype); ;} break; case 332: ! #line 1586 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; ;} break; case 333: ! #line 1591 "parse.y" ! { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;} break; case 334: ! #line 1593 "parse.y" ! { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;} break; case 338: ! #line 1603 "parse.y" ! { yyval.ttype = finish_decl_parsing (yyvsp[-1].ttype); ;} break; case 339: ! #line 1608 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == BIT_NOT_EXPR) yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, TREE_OPERAND (yyvsp[0].ttype, 0)); else yyval.ttype = finish_id_expr (yyvsp[0].ttype); ! ;} break; case 342: ! #line 1617 "parse.y" { yyval.ttype = fix_string_type (yyval.ttype); /* fix_string_type doesn't set up TYPE_MAIN_VARIANT of *************** yyreduce: *** 6971,7002 **** TREE_TYPE (yyval.ttype) = build_cplus_array_type (TREE_TYPE (TREE_TYPE (yyval.ttype)), TYPE_DOMAIN (TREE_TYPE (yyval.ttype))); ! } break; case 343: ! #line 1577 "parse.y" ! { yyval.ttype = finish_fname (yyvsp[0].ttype); } break; case 344: ! #line 1579 "parse.y" ! { yyval.ttype = finish_parenthesized_expr (yyvsp[-1].ttype); } break; case 345: ! #line 1581 "parse.y" { yyvsp[-1].ttype = reparse_decl_as_expr (NULL_TREE, yyvsp[-1].ttype); ! yyval.ttype = finish_parenthesized_expr (yyvsp[-1].ttype); } break; case 346: ! #line 1584 "parse.y" ! { yyval.ttype = error_mark_node; } break; case 347: ! #line 1586 "parse.y" { if (!at_function_scope_p ()) { error ("braced-group within expression allowed only inside a function"); --- 7025,7056 ---- TREE_TYPE (yyval.ttype) = build_cplus_array_type (TREE_TYPE (TREE_TYPE (yyval.ttype)), TYPE_DOMAIN (TREE_TYPE (yyval.ttype))); ! ;} break; case 343: ! #line 1627 "parse.y" ! { yyval.ttype = finish_fname (yyvsp[0].ttype); ;} break; case 344: ! #line 1629 "parse.y" ! { yyval.ttype = finish_parenthesized_expr (yyvsp[-1].ttype); ;} break; case 345: ! #line 1631 "parse.y" { yyvsp[-1].ttype = reparse_decl_as_expr (NULL_TREE, yyvsp[-1].ttype); ! yyval.ttype = finish_parenthesized_expr (yyvsp[-1].ttype); ;} break; case 346: ! #line 1634 "parse.y" ! { yyval.ttype = error_mark_node; ;} break; case 347: ! #line 1636 "parse.y" { if (!at_function_scope_p ()) { error ("braced-group within expression allowed only inside a function"); *************** yyreduce: *** 7005,7066 **** if (pedantic) pedwarn ("ISO C++ forbids braced-groups within expressions"); yyval.ttype = begin_stmt_expr (); ! } break; case 348: ! #line 1596 "parse.y" ! { yyval.ttype = finish_stmt_expr (yyvsp[-2].ttype); } break; case 349: ! #line 1599 "parse.y" ! { yyval.ttype = parse_finish_call_expr (yyvsp[-3].ttype, yyvsp[-1].ttype, 1); } break; case 350: ! #line 1601 "parse.y" ! { yyval.ttype = parse_finish_call_expr (yyvsp[-1].ttype, NULL_TREE, 1); } break; case 351: ! #line 1603 "parse.y" ! { yyval.ttype = parse_finish_call_expr (yyvsp[-3].ttype, yyvsp[-1].ttype, 0); } break; case 352: ! #line 1605 "parse.y" ! { yyval.ttype = parse_finish_call_expr (yyvsp[-1].ttype, NULL_TREE, 0); } break; case 353: ! #line 1607 "parse.y" { yyval.ttype = build_x_va_arg (yyvsp[-3].ttype, groktypename (yyvsp[-1].ftype.t)); ! check_for_new_type ("__builtin_va_arg", yyvsp[-1].ftype); } break; case 354: ! #line 1610 "parse.y" ! { yyval.ttype = grok_array_decl (yyval.ttype, yyvsp[-1].ttype); } break; case 355: ! #line 1612 "parse.y" ! { yyval.ttype = finish_increment_expr (yyvsp[-1].ttype, POSTINCREMENT_EXPR); } break; case 356: ! #line 1614 "parse.y" ! { yyval.ttype = finish_increment_expr (yyvsp[-1].ttype, POSTDECREMENT_EXPR); } break; case 357: ! #line 1617 "parse.y" ! { yyval.ttype = finish_this_expr (); } break; case 358: ! #line 1619 "parse.y" { /* This is a C cast in C++'s `functional' notation using the "implicit int" extension so that: --- 7059,7120 ---- if (pedantic) pedwarn ("ISO C++ forbids braced-groups within expressions"); yyval.ttype = begin_stmt_expr (); ! ;} break; case 348: ! #line 1646 "parse.y" ! { yyval.ttype = finish_stmt_expr (yyvsp[-2].ttype); ;} break; case 349: ! #line 1651 "parse.y" ! { yyval.ttype = parse_finish_call_expr (yyvsp[-3].ttype, yyvsp[-1].ttype, 1); ;} break; case 350: ! #line 1653 "parse.y" ! { yyval.ttype = parse_finish_call_expr (yyvsp[-1].ttype, NULL_TREE, 1); ;} break; case 351: ! #line 1655 "parse.y" ! { yyval.ttype = parse_finish_call_expr (yyvsp[-3].ttype, yyvsp[-1].ttype, 0); ;} break; case 352: ! #line 1657 "parse.y" ! { yyval.ttype = parse_finish_call_expr (yyvsp[-1].ttype, NULL_TREE, 0); ;} break; case 353: ! #line 1659 "parse.y" { yyval.ttype = build_x_va_arg (yyvsp[-3].ttype, groktypename (yyvsp[-1].ftype.t)); ! check_for_new_type ("__builtin_va_arg", yyvsp[-1].ftype); ;} break; case 354: ! #line 1662 "parse.y" ! { yyval.ttype = grok_array_decl (yyval.ttype, yyvsp[-1].ttype); ;} break; case 355: ! #line 1664 "parse.y" ! { yyval.ttype = finish_increment_expr (yyvsp[-1].ttype, POSTINCREMENT_EXPR); ;} break; case 356: ! #line 1666 "parse.y" ! { yyval.ttype = finish_increment_expr (yyvsp[-1].ttype, POSTDECREMENT_EXPR); ;} break; case 357: ! #line 1669 "parse.y" ! { yyval.ttype = finish_this_expr (); ;} break; case 358: ! #line 1671 "parse.y" { /* This is a C cast in C++'s `functional' notation using the "implicit int" extension so that: *************** yyreduce: *** 7070,7141 **** type = hash_tree_cons (NULL_TREE, yyvsp[-3].ttype, NULL_TREE); type = groktypename (build_tree_list (type, NULL_TREE)); yyval.ttype = build_functional_cast (type, yyvsp[-1].ttype); ! } break; case 360: ! #line 1631 "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 361: ! #line 1635 "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 362: ! #line 1639 "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 363: ! #line 1643 "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 364: ! #line 1647 "parse.y" ! { yyval.ttype = build_typeid (yyvsp[-1].ttype); } break; case 365: ! #line 1649 "parse.y" { tree type = groktypename (yyvsp[-1].ftype.t); check_for_new_type ("typeid", yyvsp[-1].ftype); ! yyval.ttype = get_typeid (type); } break; case 366: ! #line 1653 "parse.y" ! { yyval.ttype = parse_scoped_id (yyvsp[0].ttype); } break; case 367: ! #line 1655 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 368: ! #line 1657 "parse.y" { got_scope = NULL_TREE; if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) yyval.ttype = parse_scoped_id (yyvsp[0].ttype); else yyval.ttype = yyvsp[0].ttype; ! } break; case 369: ! #line 1665 "parse.y" { yyval.ttype = build_offset_ref (OP0 (yyval.ttype), OP1 (yyval.ttype)); if (!class_template_ok_as_expr && DECL_CLASS_TEMPLATE_P (yyval.ttype)) --- 7124,7195 ---- type = hash_tree_cons (NULL_TREE, yyvsp[-3].ttype, NULL_TREE); type = groktypename (build_tree_list (type, NULL_TREE)); yyval.ttype = build_functional_cast (type, yyvsp[-1].ttype); ! ;} break; case 360: ! #line 1683 "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 361: ! #line 1687 "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 362: ! #line 1691 "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 363: ! #line 1695 "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 364: ! #line 1699 "parse.y" ! { yyval.ttype = build_typeid (yyvsp[-1].ttype); ;} break; case 365: ! #line 1701 "parse.y" { tree type = groktypename (yyvsp[-1].ftype.t); check_for_new_type ("typeid", yyvsp[-1].ftype); ! yyval.ttype = get_typeid (type); ;} break; case 366: ! #line 1705 "parse.y" ! { yyval.ttype = parse_scoped_id (yyvsp[0].ttype); ;} break; case 367: ! #line 1707 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 368: ! #line 1709 "parse.y" { got_scope = NULL_TREE; if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) yyval.ttype = parse_scoped_id (yyvsp[0].ttype); else yyval.ttype = yyvsp[0].ttype; ! ;} break; case 369: ! #line 1717 "parse.y" { yyval.ttype = build_offset_ref (OP0 (yyval.ttype), OP1 (yyval.ttype)); if (!class_template_ok_as_expr && DECL_CLASS_TEMPLATE_P (yyval.ttype)) *************** yyreduce: *** 7143,7550 **** error ("invalid use of template `%D'", yyval.ttype); yyval.ttype = error_mark_node; } ! } break; case 370: ! #line 1674 "parse.y" ! { yyval.ttype = parse_finish_call_expr (yyvsp[-3].ttype, yyvsp[-1].ttype, 0); } break; case 371: ! #line 1676 "parse.y" ! { yyval.ttype = parse_finish_call_expr (yyvsp[-1].ttype, NULL_TREE, 0); } break; case 372: ! #line 1678 "parse.y" ! { yyval.ttype = finish_class_member_access_expr (yyval.ttype, yyvsp[0].ttype); } break; case 373: ! #line 1680 "parse.y" ! { yyval.ttype = finish_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); } break; case 374: ! #line 1682 "parse.y" ! { yyval.ttype = finish_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); } break; case 375: ! #line 1684 "parse.y" ! { yyval.ttype = finish_class_member_access_expr (yyval.ttype, yyvsp[0].ttype); } break; case 376: ! #line 1686 "parse.y" ! { yyval.ttype = finish_class_member_access_expr (yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 377: ! #line 1688 "parse.y" ! { yyval.ttype = finish_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); } break; case 378: ! #line 1690 "parse.y" ! { yyval.ttype = finish_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); } break; case 379: ! #line 1692 "parse.y" ! { yyval.ttype = finish_qualified_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); } break; case 380: ! #line 1694 "parse.y" ! { yyval.ttype = finish_qualified_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); } break; case 381: ! #line 1697 "parse.y" ! { yyval.ttype = finish_pseudo_destructor_call_expr (yyvsp[-3].ttype, NULL_TREE, yyvsp[-1].ttype); } break; case 382: ! #line 1699 "parse.y" ! { yyval.ttype = finish_pseudo_destructor_call_expr (yyvsp[-5].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); } break; case 383: ! #line 1701 "parse.y" { yyval.ttype = error_mark_node; ! } break; case 384: ! #line 1710 "parse.y" ! { yyval.itype = 0; } break; case 385: ! #line 1712 "parse.y" ! { got_scope = NULL_TREE; yyval.itype = 1; } break; case 386: ! #line 1717 "parse.y" ! { yyval.itype = 0; } break; case 387: ! #line 1719 "parse.y" ! { got_scope = NULL_TREE; yyval.itype = 1; } break; case 388: ! #line 1724 "parse.y" ! { yyval.ttype = boolean_true_node; } break; case 389: ! #line 1726 "parse.y" ! { yyval.ttype = boolean_false_node; } break; case 390: ! #line 1731 "parse.y" { if (DECL_CONSTRUCTOR_P (current_function_decl)) finish_mem_initializers (NULL_TREE); ! } break; case 391: ! #line 1739 "parse.y" ! { got_object = TREE_TYPE (yyval.ttype); } break; case 392: ! #line 1741 "parse.y" { yyval.ttype = build_x_arrow (yyval.ttype); got_object = TREE_TYPE (yyval.ttype); ! } break; case 393: ! #line 1749 "parse.y" { if (yyvsp[-2].ftype.t && IS_AGGR_TYPE_CODE (TREE_CODE (yyvsp[-2].ftype.t))) note_got_semicolon (yyvsp[-2].ftype.t); ! } break; case 394: ! #line 1754 "parse.y" { note_list_got_semicolon (yyvsp[-2].ftype.t); ! } break; case 395: ! #line 1758 "parse.y" ! {} break; case 396: ! #line 1760 "parse.y" { shadow_tag (yyvsp[-1].ftype.t); note_list_got_semicolon (yyvsp[-1].ftype.t); ! } break; case 397: ! #line 1765 "parse.y" ! { warning ("empty declaration"); } break; case 398: ! #line 1767 "parse.y" ! { pedantic = yyvsp[-1].itype; } break; case 401: ! #line 1780 "parse.y" { yyval.ttype = make_call_declarator (NULL_TREE, empty_parms (), ! NULL_TREE, NULL_TREE); } break; case 402: ! #line 1783 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), NULL_TREE, ! NULL_TREE); } break; case 403: ! #line 1790 "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 404: ! #line 1793 "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 405: ! #line 1796 "parse.y" { yyval.ftype.t = build_tree_list (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), yyvsp[0].ttype); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; } break; case 406: ! #line 1800 "parse.y" { yyval.ftype.t = build_tree_list (yyvsp[0].ftype.t, NULL_TREE); ! yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; } break; case 407: ! #line 1803 "parse.y" { yyval.ftype.t = build_tree_list (yyvsp[0].ftype.t, NULL_TREE); ! yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; } break; case 408: ! #line 1811 "parse.y" ! { yyval.ftype.lookups = type_lookups; } break; case 409: ! #line 1813 "parse.y" ! { yyval.ftype.lookups = type_lookups; } break; case 410: ! #line 1818 "parse.y" { yyval.ftype.t = 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 411: ! #line 1821 "parse.y" { yyval.ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; } break; case 412: ! #line 1824 "parse.y" { yyval.ftype.t = 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 413: ! #line 1827 "parse.y" { yyval.ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ftype.t)); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; } break; case 414: ! #line 1830 "parse.y" { yyval.ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ftype.t)); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; } break; case 415: ! #line 1833 "parse.y" { yyval.ftype.t = tree_cons (NULL_TREE, yyvsp[-2].ftype.t, chainon (yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyvsp[-3].ftype.t))); ! yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; } break; case 416: ! #line 1840 "parse.y" { if (extra_warnings) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyval.ttype)); ! yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); } break; case 417: ! #line 1845 "parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyval.ttype); } break; case 418: ! #line 1847 "parse.y" { if (extra_warnings) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); ! yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); } break; case 419: ! #line 1859 "parse.y" ! { yyval.ftype.lookups = NULL_TREE; TREE_STATIC (yyval.ftype.t) = 1; } break; case 420: ! #line 1861 "parse.y" { yyval.ftype.t = hash_tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); yyval.ftype.new_type_flag = 0; yyval.ftype.lookups = NULL_TREE; ! } break; case 421: ! #line 1866 "parse.y" { yyval.ftype.t = hash_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t); TREE_STATIC (yyval.ftype.t) = 1; ! } break; case 422: ! #line 1871 "parse.y" { if (extra_warnings && TREE_STATIC (yyval.ftype.t)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ftype.t = hash_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t); TREE_STATIC (yyval.ftype.t) = TREE_STATIC (yyvsp[-1].ftype.t); ! } break; case 423: ! #line 1879 "parse.y" ! { yyval.ftype.t = hash_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ftype.t); } break; case 424: ! #line 1886 "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 425: ! #line 1889 "parse.y" { yyval.ftype.t = 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 426: ! #line 1892 "parse.y" { yyval.ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; } break; case 427: ! #line 1895 "parse.y" { yyval.ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ftype.t)); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; } break; case 428: ! #line 1901 "parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); } break; case 429: ! #line 1903 "parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype); } break; case 430: ! #line 1905 "parse.y" ! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); } break; case 431: ! #line 1907 "parse.y" ! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); } break; case 432: ! #line 1911 "parse.y" ! { skip_evaluation++; } break; case 433: ! #line 1915 "parse.y" ! { skip_evaluation++; } break; case 434: ! #line 1919 "parse.y" ! { skip_evaluation++; } break; case 435: ! #line 1926 "parse.y" ! { yyval.ftype.lookups = NULL_TREE; } break; case 436: ! #line 1928 "parse.y" ! { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; yyval.ftype.lookups = NULL_TREE; } break; case 437: ! #line 1930 "parse.y" ! { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; yyval.ftype.lookups = NULL_TREE; } break; case 438: ! #line 1932 "parse.y" { yyval.ftype.t = finish_typeof (yyvsp[-1].ttype); yyval.ftype.new_type_flag = 0; yyval.ftype.lookups = NULL_TREE; ! skip_evaluation--; } break; case 439: ! #line 1936 "parse.y" { yyval.ftype.t = groktypename (yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = 0; yyval.ftype.lookups = NULL_TREE; ! skip_evaluation--; } break; case 440: ! #line 1940 "parse.y" { tree type = TREE_TYPE (yyvsp[-1].ttype); yyval.ftype.new_type_flag = 0; yyval.ftype.lookups = NULL_TREE; --- 7197,7604 ---- error ("invalid use of template `%D'", yyval.ttype); yyval.ttype = error_mark_node; } ! ;} break; case 370: ! #line 1726 "parse.y" ! { yyval.ttype = parse_finish_call_expr (yyvsp[-3].ttype, yyvsp[-1].ttype, 0); ;} break; case 371: ! #line 1728 "parse.y" ! { yyval.ttype = parse_finish_call_expr (yyvsp[-1].ttype, NULL_TREE, 0); ;} break; case 372: ! #line 1730 "parse.y" ! { yyval.ttype = finish_class_member_access_expr (yyval.ttype, yyvsp[0].ttype); ;} break; case 373: ! #line 1732 "parse.y" ! { yyval.ttype = finish_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ;} break; case 374: ! #line 1734 "parse.y" ! { yyval.ttype = finish_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); ;} break; case 375: ! #line 1736 "parse.y" ! { yyval.ttype = finish_class_member_access_expr (yyval.ttype, yyvsp[0].ttype); ;} break; case 376: ! #line 1738 "parse.y" ! { yyval.ttype = finish_class_member_access_expr (yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 377: ! #line 1740 "parse.y" ! { yyval.ttype = finish_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ;} break; case 378: ! #line 1742 "parse.y" ! { yyval.ttype = finish_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); ;} break; case 379: ! #line 1744 "parse.y" ! { yyval.ttype = finish_qualified_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ;} break; case 380: ! #line 1746 "parse.y" ! { yyval.ttype = finish_qualified_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); ;} break; case 381: ! #line 1749 "parse.y" ! { yyval.ttype = finish_pseudo_destructor_call_expr (yyvsp[-3].ttype, NULL_TREE, yyvsp[-1].ttype); ;} break; case 382: ! #line 1751 "parse.y" ! { yyval.ttype = finish_pseudo_destructor_call_expr (yyvsp[-5].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ;} break; case 383: ! #line 1753 "parse.y" { yyval.ttype = error_mark_node; ! ;} break; case 384: ! #line 1798 "parse.y" ! { yyval.itype = 0; ;} break; case 385: ! #line 1800 "parse.y" ! { got_scope = NULL_TREE; yyval.itype = 1; ;} break; case 386: ! #line 1805 "parse.y" ! { yyval.itype = 0; ;} break; case 387: ! #line 1807 "parse.y" ! { got_scope = NULL_TREE; yyval.itype = 1; ;} break; case 388: ! #line 1812 "parse.y" ! { yyval.ttype = boolean_true_node; ;} break; case 389: ! #line 1814 "parse.y" ! { yyval.ttype = boolean_false_node; ;} break; case 390: ! #line 1819 "parse.y" { if (DECL_CONSTRUCTOR_P (current_function_decl)) finish_mem_initializers (NULL_TREE); ! ;} break; case 391: ! #line 1827 "parse.y" ! { got_object = TREE_TYPE (yyval.ttype); ;} break; case 392: ! #line 1829 "parse.y" { yyval.ttype = build_x_arrow (yyval.ttype); got_object = TREE_TYPE (yyval.ttype); ! ;} break; case 393: ! #line 1837 "parse.y" { if (yyvsp[-2].ftype.t && IS_AGGR_TYPE_CODE (TREE_CODE (yyvsp[-2].ftype.t))) note_got_semicolon (yyvsp[-2].ftype.t); ! ;} break; case 394: ! #line 1842 "parse.y" { note_list_got_semicolon (yyvsp[-2].ftype.t); ! ;} break; case 395: ! #line 1846 "parse.y" ! {;} break; case 396: ! #line 1848 "parse.y" { shadow_tag (yyvsp[-1].ftype.t); note_list_got_semicolon (yyvsp[-1].ftype.t); ! ;} break; case 397: ! #line 1853 "parse.y" ! { warning ("empty declaration"); ;} break; case 398: ! #line 1855 "parse.y" ! { pedantic = yyvsp[-1].itype; ;} break; case 401: ! #line 1869 "parse.y" { yyval.ttype = make_call_declarator (NULL_TREE, empty_parms (), ! NULL_TREE, NULL_TREE); ;} break; case 402: ! #line 1872 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), NULL_TREE, ! NULL_TREE); ;} break; case 403: ! #line 1879 "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 404: ! #line 1882 "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 405: ! #line 1885 "parse.y" { yyval.ftype.t = build_tree_list (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), yyvsp[0].ttype); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;} break; case 406: ! #line 1889 "parse.y" { yyval.ftype.t = build_tree_list (yyvsp[0].ftype.t, NULL_TREE); ! yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;} break; case 407: ! #line 1892 "parse.y" { yyval.ftype.t = build_tree_list (yyvsp[0].ftype.t, NULL_TREE); ! yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;} break; case 408: ! #line 1903 "parse.y" ! { yyval.ftype.lookups = type_lookups; ;} break; case 409: ! #line 1905 "parse.y" ! { yyval.ftype.lookups = type_lookups; ;} break; case 410: ! #line 1910 "parse.y" { yyval.ftype.t = 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 411: ! #line 1913 "parse.y" { yyval.ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;} break; case 412: ! #line 1916 "parse.y" { yyval.ftype.t = 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 413: ! #line 1919 "parse.y" { yyval.ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ftype.t)); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;} break; case 414: ! #line 1922 "parse.y" { yyval.ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ftype.t)); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;} break; case 415: ! #line 1925 "parse.y" { yyval.ftype.t = tree_cons (NULL_TREE, yyvsp[-2].ftype.t, chainon (yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyvsp[-3].ftype.t))); ! yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ;} break; case 416: ! #line 1932 "parse.y" { if (extra_warnings) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyval.ttype)); ! yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;} break; case 417: ! #line 1937 "parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyval.ttype); ;} break; case 418: ! #line 1939 "parse.y" { if (extra_warnings) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); ! yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;} break; case 419: ! #line 1961 "parse.y" ! { yyval.ftype.lookups = NULL_TREE; TREE_STATIC (yyval.ftype.t) = 1; ;} break; case 420: ! #line 1963 "parse.y" { yyval.ftype.t = hash_tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); yyval.ftype.new_type_flag = 0; yyval.ftype.lookups = NULL_TREE; ! ;} break; case 421: ! #line 1968 "parse.y" { yyval.ftype.t = hash_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t); TREE_STATIC (yyval.ftype.t) = 1; ! ;} break; case 422: ! #line 1973 "parse.y" { if (extra_warnings && TREE_STATIC (yyval.ftype.t)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ftype.t = hash_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t); TREE_STATIC (yyval.ftype.t) = TREE_STATIC (yyvsp[-1].ftype.t); ! ;} break; case 423: ! #line 1981 "parse.y" ! { yyval.ftype.t = hash_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ftype.t); ;} break; case 424: ! #line 1992 "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 425: ! #line 1995 "parse.y" { yyval.ftype.t = 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 426: ! #line 1998 "parse.y" { yyval.ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;} break; case 427: ! #line 2001 "parse.y" { yyval.ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ftype.t)); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;} break; case 428: ! #line 2007 "parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ;} break; case 429: ! #line 2009 "parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype); ;} break; case 430: ! #line 2011 "parse.y" ! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;} break; case 431: ! #line 2013 "parse.y" ! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;} break; case 432: ! #line 2017 "parse.y" ! { skip_evaluation++; ;} break; case 433: ! #line 2021 "parse.y" ! { skip_evaluation++; ;} break; case 434: ! #line 2025 "parse.y" ! { skip_evaluation++; ;} break; case 435: ! #line 2034 "parse.y" ! { yyval.ftype.lookups = NULL_TREE; ;} break; case 436: ! #line 2036 "parse.y" ! { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; yyval.ftype.lookups = NULL_TREE; ;} break; case 437: ! #line 2038 "parse.y" ! { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; yyval.ftype.lookups = NULL_TREE; ;} break; case 438: ! #line 2040 "parse.y" { yyval.ftype.t = finish_typeof (yyvsp[-1].ttype); yyval.ftype.new_type_flag = 0; yyval.ftype.lookups = NULL_TREE; ! skip_evaluation--; ;} break; case 439: ! #line 2044 "parse.y" { yyval.ftype.t = groktypename (yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = 0; yyval.ftype.lookups = NULL_TREE; ! skip_evaluation--; ;} break; case 440: ! #line 2048 "parse.y" { tree type = TREE_TYPE (yyvsp[-1].ttype); yyval.ftype.new_type_flag = 0; yyval.ftype.lookups = NULL_TREE; *************** yyreduce: *** 7558,7568 **** error ("`sigof' applied to non-aggregate expression"); yyval.ftype.t = error_mark_node; } ! } break; case 441: ! #line 1955 "parse.y" { tree type = groktypename (yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = 0; yyval.ftype.lookups = NULL_TREE; --- 7612,7622 ---- error ("`sigof' applied to non-aggregate expression"); yyval.ftype.t = error_mark_node; } ! ;} break; case 441: ! #line 2063 "parse.y" { tree type = groktypename (yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = 0; yyval.ftype.lookups = NULL_TREE; *************** yyreduce: *** 7576,7908 **** error("`sigof' applied to non-aggregate type"); yyval.ftype.t = error_mark_node; } ! } break; case 442: ! #line 1975 "parse.y" ! { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; } break; case 443: ! #line 1977 "parse.y" ! { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; } break; case 446: ! #line 1984 "parse.y" ! { check_multiple_declarators (); } break; case 448: ! #line 1990 "parse.y" ! { check_multiple_declarators (); } break; case 450: ! #line 1996 "parse.y" ! { check_multiple_declarators (); } break; case 451: ! #line 2001 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 452: ! #line 2003 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; } break; case 453: ! #line 2008 "parse.y" ! { yyval.ttype = parse_decl (yyvsp[-3].ttype, yyvsp[-1].ttype, 1); } break; case 454: ! #line 2011 "parse.y" ! { parse_end_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); } break; case 455: ! #line 2013 "parse.y" { yyval.ttype = parse_decl (yyvsp[-2].ttype, yyvsp[0].ttype, 0); parse_end_decl (yyval.ttype, NULL_TREE, yyvsp[-1].ttype); ! } break; case 456: ! #line 2022 "parse.y" { yyval.ttype = parse_decl0 (yyvsp[-3].ttype, yyvsp[-4].ftype.t, ! yyvsp[-4].ftype.lookups, yyvsp[-1].ttype, 1); } break; case 457: ! #line 2026 "parse.y" ! { parse_end_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); } break; case 458: ! #line 2028 "parse.y" { tree d = parse_decl0 (yyvsp[-2].ttype, yyvsp[-3].ftype.t, yyvsp[-3].ftype.lookups, yyvsp[0].ttype, 0); ! parse_end_decl (d, NULL_TREE, yyvsp[-1].ttype); } break; case 459: ! #line 2035 "parse.y" ! {} break; case 460: ! #line 2040 "parse.y" ! {} break; case 461: ! #line 2045 "parse.y" { /* Set things up as initdcl0_innards expects. */ yyval.ttype = yyvsp[0].ttype; yyvsp[0].ttype = yyvsp[-1].ttype; yyvsp[-1].ftype.t = NULL_TREE; ! yyvsp[-1].ftype.lookups = NULL_TREE; } break; case 462: ! #line 2051 "parse.y" ! {} break; case 463: ! #line 2053 "parse.y" { tree d = parse_decl0 (yyvsp[-2].ttype, NULL_TREE, NULL_TREE, yyvsp[0].ttype, 0); ! parse_end_decl (d, NULL_TREE, yyvsp[-1].ttype); } break; case 464: ! #line 2060 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 465: ! #line 2062 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 466: ! #line 2067 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 467: ! #line 2069 "parse.y" ! { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 468: ! #line 2074 "parse.y" ! { yyval.ttype = yyvsp[-2].ttype; } break; case 469: ! #line 2079 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 470: ! #line 2081 "parse.y" ! { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); } break; case 471: ! #line 2086 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 472: ! #line 2088 "parse.y" ! { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); } break; case 473: ! #line 2090 "parse.y" ! { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); } break; case 474: ! #line 2092 "parse.y" ! { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); } break; case 475: ! #line 2094 "parse.y" ! { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); } break; case 480: ! #line 2109 "parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); } break; case 481: ! #line 2111 "parse.y" ! { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); } break; case 482: ! #line 2116 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 483: ! #line 2118 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 485: ! #line 2126 "parse.y" { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE); ! TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; } break; case 486: ! #line 2129 "parse.y" { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype)); ! TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; } break; case 487: ! #line 2132 "parse.y" { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype)); ! TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; } break; case 488: ! #line 2135 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 489: ! #line 2141 "parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); } break; case 490: ! #line 2143 "parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); } break; case 491: ! #line 2146 "parse.y" ! { yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype); } break; case 492: ! #line 2148 "parse.y" ! { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); } break; case 493: ! #line 2150 "parse.y" ! { yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); } break; case 494: ! #line 2155 "parse.y" { expand_body (finish_function (2)); process_next_inline (yyvsp[-2].pi); ! } break; case 495: ! #line 2160 "parse.y" { expand_body (finish_function (2)); process_next_inline (yyvsp[-2].pi); ! } break; case 496: ! #line 2165 "parse.y" { finish_function (2); ! process_next_inline (yyvsp[-2].pi); } break; case 499: ! #line 2178 "parse.y" ! { replace_defarg (yyvsp[-2].ttype, yyvsp[-1].ttype); } break; case 500: ! #line 2180 "parse.y" ! { replace_defarg (yyvsp[-2].ttype, error_mark_node); } break; case 502: ! #line 2186 "parse.y" ! { do_pending_defargs (); } break; case 503: ! #line 2188 "parse.y" ! { do_pending_defargs (); } break; case 504: ! #line 2193 "parse.y" { yyval.ttype = current_enum_type; ! current_enum_type = start_enum (yyvsp[-1].ttype); } break; case 505: ! #line 2196 "parse.y" { yyval.ftype.t = current_enum_type; finish_enum (current_enum_type); yyval.ftype.new_type_flag = 1; current_enum_type = yyvsp[-2].ttype; ! check_for_missing_semicolon (yyval.ftype.t); } break; case 506: ! #line 2202 "parse.y" { yyval.ttype = current_enum_type; ! current_enum_type = start_enum (make_anon_name ()); } break; case 507: ! #line 2205 "parse.y" { yyval.ftype.t = current_enum_type; finish_enum (current_enum_type); yyval.ftype.new_type_flag = 1; current_enum_type = yyvsp[-2].ttype; ! check_for_missing_semicolon (yyval.ftype.t); } break; case 508: ! #line 2211 "parse.y" { yyval.ftype.t = parse_xref_tag (enum_type_node, yyvsp[0].ttype, 1); ! yyval.ftype.new_type_flag = 0; } break; case 509: ! #line 2214 "parse.y" { yyval.ftype.t = parse_xref_tag (enum_type_node, yyvsp[0].ttype, 1); ! yyval.ftype.new_type_flag = 0; } break; case 510: ! #line 2217 "parse.y" { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; if (!processing_template_decl) ! pedwarn ("using `typename' outside of template"); } break; case 511: ! #line 2223 "parse.y" { if (yyvsp[-1].ttype && yyvsp[-2].ftype.t != error_mark_node) { --- 7630,7962 ---- error("`sigof' applied to non-aggregate type"); yyval.ftype.t = error_mark_node; } ! ;} break; case 442: ! #line 2083 "parse.y" ! { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;} break; case 443: ! #line 2085 "parse.y" ! { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;} break; case 446: ! #line 2092 "parse.y" ! { check_multiple_declarators (); ;} break; case 448: ! #line 2098 "parse.y" ! { check_multiple_declarators (); ;} break; case 450: ! #line 2104 "parse.y" ! { check_multiple_declarators (); ;} break; case 451: ! #line 2109 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 452: ! #line 2111 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; ;} break; case 453: ! #line 2116 "parse.y" ! { yyval.ttype = parse_decl (yyvsp[-3].ttype, yyvsp[-1].ttype, 1); ;} break; case 454: ! #line 2119 "parse.y" ! { parse_end_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;} break; case 455: ! #line 2121 "parse.y" { yyval.ttype = parse_decl (yyvsp[-2].ttype, yyvsp[0].ttype, 0); parse_end_decl (yyval.ttype, NULL_TREE, yyvsp[-1].ttype); ! ;} break; case 456: ! #line 2135 "parse.y" { yyval.ttype = parse_decl0 (yyvsp[-3].ttype, yyvsp[-4].ftype.t, ! yyvsp[-4].ftype.lookups, yyvsp[-1].ttype, 1); ;} break; case 457: ! #line 2140 "parse.y" ! { parse_end_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;} break; case 458: ! #line 2142 "parse.y" { tree d = parse_decl0 (yyvsp[-2].ttype, yyvsp[-3].ftype.t, yyvsp[-3].ftype.lookups, yyvsp[0].ttype, 0); ! parse_end_decl (d, NULL_TREE, yyvsp[-1].ttype); ;} break; case 459: ! #line 2149 "parse.y" ! {;} break; case 460: ! #line 2154 "parse.y" ! {;} break; case 461: ! #line 2159 "parse.y" { /* Set things up as initdcl0_innards expects. */ yyval.ttype = yyvsp[0].ttype; yyvsp[0].ttype = yyvsp[-1].ttype; yyvsp[-1].ftype.t = NULL_TREE; ! yyvsp[-1].ftype.lookups = NULL_TREE; ;} break; case 462: ! #line 2165 "parse.y" ! {;} break; case 463: ! #line 2167 "parse.y" { tree d = parse_decl0 (yyvsp[-2].ttype, NULL_TREE, NULL_TREE, yyvsp[0].ttype, 0); ! parse_end_decl (d, NULL_TREE, yyvsp[-1].ttype); ;} break; case 464: ! #line 2175 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 465: ! #line 2177 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 466: ! #line 2182 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 467: ! #line 2184 "parse.y" ! { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 468: ! #line 2189 "parse.y" ! { yyval.ttype = yyvsp[-2].ttype; ;} break; case 469: ! #line 2194 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 470: ! #line 2196 "parse.y" ! { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; case 471: ! #line 2201 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 472: ! #line 2203 "parse.y" ! { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;} break; case 473: ! #line 2205 "parse.y" ! { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;} break; case 474: ! #line 2207 "parse.y" ! { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;} break; case 475: ! #line 2209 "parse.y" ! { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;} break; case 480: ! #line 2225 "parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;} break; case 481: ! #line 2227 "parse.y" ! { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;} break; case 482: ! #line 2232 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 483: ! #line 2234 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 485: ! #line 2243 "parse.y" { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE); ! TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;} break; case 486: ! #line 2246 "parse.y" { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype)); ! TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;} break; case 487: ! #line 2249 "parse.y" { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype)); ! TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;} break; case 488: ! #line 2252 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 489: ! #line 2259 "parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;} break; case 490: ! #line 2261 "parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;} break; case 491: ! #line 2264 "parse.y" ! { yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; case 492: ! #line 2266 "parse.y" ! { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;} break; case 493: ! #line 2268 "parse.y" ! { yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;} break; case 494: ! #line 2273 "parse.y" { expand_body (finish_function (2)); process_next_inline (yyvsp[-2].pi); ! ;} break; case 495: ! #line 2278 "parse.y" { expand_body (finish_function (2)); process_next_inline (yyvsp[-2].pi); ! ;} break; case 496: ! #line 2283 "parse.y" { finish_function (2); ! process_next_inline (yyvsp[-2].pi); ;} break; case 499: ! #line 2297 "parse.y" ! { replace_defarg (yyvsp[-2].ttype, yyvsp[-1].ttype); ;} break; case 500: ! #line 2299 "parse.y" ! { replace_defarg (yyvsp[-2].ttype, error_mark_node); ;} break; case 502: ! #line 2305 "parse.y" ! { do_pending_defargs (); ;} break; case 503: ! #line 2307 "parse.y" ! { do_pending_defargs (); ;} break; case 504: ! #line 2312 "parse.y" { yyval.ttype = current_enum_type; ! current_enum_type = start_enum (yyvsp[-1].ttype); ;} break; case 505: ! #line 2315 "parse.y" { yyval.ftype.t = current_enum_type; finish_enum (current_enum_type); yyval.ftype.new_type_flag = 1; current_enum_type = yyvsp[-2].ttype; ! check_for_missing_semicolon (yyval.ftype.t); ;} break; case 506: ! #line 2321 "parse.y" { yyval.ttype = current_enum_type; ! current_enum_type = start_enum (make_anon_name ()); ;} break; case 507: ! #line 2324 "parse.y" { yyval.ftype.t = current_enum_type; finish_enum (current_enum_type); yyval.ftype.new_type_flag = 1; current_enum_type = yyvsp[-2].ttype; ! check_for_missing_semicolon (yyval.ftype.t); ;} break; case 508: ! #line 2330 "parse.y" { yyval.ftype.t = parse_xref_tag (enum_type_node, yyvsp[0].ttype, 1); ! yyval.ftype.new_type_flag = 0; ;} break; case 509: ! #line 2333 "parse.y" { yyval.ftype.t = parse_xref_tag (enum_type_node, yyvsp[0].ttype, 1); ! yyval.ftype.new_type_flag = 0; ;} break; case 510: ! #line 2336 "parse.y" { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; if (!processing_template_decl) ! pedwarn ("using `typename' outside of template"); ;} break; case 511: ! #line 2342 "parse.y" { if (yyvsp[-1].ttype && yyvsp[-2].ftype.t != error_mark_node) { *************** yyreduce: *** 7926,7936 **** } yyvsp[-2].ftype.t = begin_class_definition (TREE_TYPE (yyvsp[-2].ftype.t)); check_class_key (current_aggr, yyvsp[-2].ftype.t); ! current_aggr = NULL_TREE; } break; case 512: ! #line 2248 "parse.y" { int semi; tree t; --- 7980,7990 ---- } yyvsp[-2].ftype.t = begin_class_definition (TREE_TYPE (yyvsp[-2].ftype.t)); check_class_key (current_aggr, yyvsp[-2].ftype.t); ! current_aggr = NULL_TREE; ;} break; case 512: ! #line 2367 "parse.y" { int semi; tree t; *************** yyreduce: *** 7947,8096 **** ? union_type_node : CLASSTYPE_DECLARED_CLASS (t) ? class_type_node : record_type_node; ! } break; case 513: ! #line 2266 "parse.y" { done_pending_defargs (); begin_inline_definitions (); ! } break; case 514: ! #line 2271 "parse.y" { yyval.ftype.t = yyvsp[-3].ttype; yyval.ftype.new_type_flag = 1; ! } break; case 515: ! #line 2276 "parse.y" { yyval.ftype.t = TREE_TYPE (yyvsp[0].ftype.t); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; check_class_key (current_aggr, yyval.ftype.t); ! } break; case 519: ! #line 2291 "parse.y" { if (pedantic && !in_system_header) ! pedwarn ("comma at end of enumerator list"); } break; case 521: ! #line 2298 "parse.y" ! { error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); } break; case 522: ! #line 2300 "parse.y" ! { error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); } break; case 523: ! #line 2302 "parse.y" ! { error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); } break; case 524: ! #line 2304 "parse.y" ! { error ("no body nor ';' separates two class, struct or union declarations"); } break; case 525: ! #line 2306 "parse.y" ! { yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ttype); } break; case 526: ! #line 2311 "parse.y" { current_aggr = yyvsp[-1].ttype; yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ! } break; case 527: ! #line 2316 "parse.y" { current_aggr = yyvsp[-2].ttype; yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ! } break; case 528: ! #line 2321 "parse.y" { current_aggr = yyvsp[-3].ttype; yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ! } break; case 529: ! #line 2326 "parse.y" { current_aggr = yyvsp[-2].ttype; yyval.ttype = build_tree_list (global_namespace, yyvsp[0].ttype); ! } break; case 530: ! #line 2334 "parse.y" { current_aggr = yyvsp[-1].ttype; yyval.ttype = yyvsp[0].ttype; ! } break; case 531: ! #line 2339 "parse.y" { current_aggr = yyvsp[-2].ttype; yyval.ttype = yyvsp[0].ttype; ! } break; case 532: ! #line 2344 "parse.y" { current_aggr = yyvsp[-3].ttype; yyval.ttype = yyvsp[0].ttype; ! } break; case 533: ! #line 2352 "parse.y" { yyval.ftype.t = parse_handle_class_head (current_aggr, TREE_PURPOSE (yyvsp[0].ttype), TREE_VALUE (yyvsp[0].ttype), 0, &yyval.ftype.new_type_flag); ! } break; case 534: ! #line 2359 "parse.y" { current_aggr = yyvsp[-1].ttype; yyval.ftype.t = TYPE_MAIN_DECL (parse_xref_tag (current_aggr, yyvsp[0].ttype, 0)); yyval.ftype.new_type_flag = 1; ! } break; case 535: ! #line 2365 "parse.y" { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ! } break; case 536: ! #line 2373 "parse.y" { yyungetc ('{', 1); yyval.ftype.t = parse_handle_class_head (current_aggr, --- 8001,8150 ---- ? union_type_node : CLASSTYPE_DECLARED_CLASS (t) ? class_type_node : record_type_node; ! ;} break; case 513: ! #line 2385 "parse.y" { done_pending_defargs (); begin_inline_definitions (); ! ;} break; case 514: ! #line 2390 "parse.y" { yyval.ftype.t = yyvsp[-3].ttype; yyval.ftype.new_type_flag = 1; ! ;} break; case 515: ! #line 2395 "parse.y" { yyval.ftype.t = TREE_TYPE (yyvsp[0].ftype.t); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; check_class_key (current_aggr, yyval.ftype.t); ! ;} break; case 519: ! #line 2410 "parse.y" { if (pedantic && !in_system_header) ! pedwarn ("comma at end of enumerator list"); ;} break; case 521: ! #line 2417 "parse.y" ! { error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;} break; case 522: ! #line 2419 "parse.y" ! { error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;} break; case 523: ! #line 2421 "parse.y" ! { error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;} break; case 524: ! #line 2423 "parse.y" ! { error ("no body nor ';' separates two class, struct or union declarations"); ;} break; case 525: ! #line 2425 "parse.y" ! { yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ttype); ;} break; case 526: ! #line 2430 "parse.y" { current_aggr = yyvsp[-1].ttype; yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ! ;} break; case 527: ! #line 2435 "parse.y" { current_aggr = yyvsp[-2].ttype; yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ! ;} break; case 528: ! #line 2440 "parse.y" { current_aggr = yyvsp[-3].ttype; yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ! ;} break; case 529: ! #line 2445 "parse.y" { current_aggr = yyvsp[-2].ttype; yyval.ttype = build_tree_list (global_namespace, yyvsp[0].ttype); ! ;} break; case 530: ! #line 2453 "parse.y" { current_aggr = yyvsp[-1].ttype; yyval.ttype = yyvsp[0].ttype; ! ;} break; case 531: ! #line 2458 "parse.y" { current_aggr = yyvsp[-2].ttype; yyval.ttype = yyvsp[0].ttype; ! ;} break; case 532: ! #line 2463 "parse.y" { current_aggr = yyvsp[-3].ttype; yyval.ttype = yyvsp[0].ttype; ! ;} break; case 533: ! #line 2471 "parse.y" { yyval.ftype.t = parse_handle_class_head (current_aggr, TREE_PURPOSE (yyvsp[0].ttype), TREE_VALUE (yyvsp[0].ttype), 0, &yyval.ftype.new_type_flag); ! ;} break; case 534: ! #line 2478 "parse.y" { current_aggr = yyvsp[-1].ttype; yyval.ftype.t = TYPE_MAIN_DECL (parse_xref_tag (current_aggr, yyvsp[0].ttype, 0)); yyval.ftype.new_type_flag = 1; ! ;} break; case 535: ! #line 2484 "parse.y" { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ! ;} break; case 536: ! #line 2492 "parse.y" { yyungetc ('{', 1); yyval.ftype.t = parse_handle_class_head (current_aggr, *************** yyreduce: *** 8098,8159 **** TREE_VALUE (yyvsp[-1].ttype), 1, &yyval.ftype.new_type_flag); ! } break; case 537: ! #line 2382 "parse.y" { yyungetc (':', 1); yyval.ftype.t = parse_handle_class_head (current_aggr, TREE_PURPOSE (yyvsp[-1].ttype), TREE_VALUE (yyvsp[-1].ttype), 1, &yyval.ftype.new_type_flag); ! } break; case 538: ! #line 2390 "parse.y" { yyungetc ('{', 1); yyval.ftype.t = handle_class_head_apparent_template (yyvsp[-1].ttype, &yyval.ftype.new_type_flag); ! } break; case 539: ! #line 2396 "parse.y" { yyungetc (':', 1); yyval.ftype.t = handle_class_head_apparent_template (yyvsp[-1].ttype, &yyval.ftype.new_type_flag); ! } break; case 540: ! #line 2402 "parse.y" { yyungetc ('{', 1); current_aggr = yyvsp[-2].ttype; yyval.ftype.t = parse_handle_class_head (current_aggr, NULL_TREE, yyvsp[-1].ttype, 1, &yyval.ftype.new_type_flag); ! } break; case 541: ! #line 2410 "parse.y" { yyungetc (':', 1); current_aggr = yyvsp[-2].ttype; yyval.ftype.t = parse_handle_class_head (current_aggr, NULL_TREE, yyvsp[-1].ttype, 1, &yyval.ftype.new_type_flag); ! } break; case 542: ! #line 2418 "parse.y" { current_aggr = yyvsp[-1].ttype; yyval.ftype.t = TYPE_MAIN_DECL (parse_xref_tag (yyvsp[-1].ttype, --- 8152,8213 ---- TREE_VALUE (yyvsp[-1].ttype), 1, &yyval.ftype.new_type_flag); ! ;} break; case 537: ! #line 2501 "parse.y" { yyungetc (':', 1); yyval.ftype.t = parse_handle_class_head (current_aggr, TREE_PURPOSE (yyvsp[-1].ttype), TREE_VALUE (yyvsp[-1].ttype), 1, &yyval.ftype.new_type_flag); ! ;} break; case 538: ! #line 2509 "parse.y" { yyungetc ('{', 1); yyval.ftype.t = handle_class_head_apparent_template (yyvsp[-1].ttype, &yyval.ftype.new_type_flag); ! ;} break; case 539: ! #line 2515 "parse.y" { yyungetc (':', 1); yyval.ftype.t = handle_class_head_apparent_template (yyvsp[-1].ttype, &yyval.ftype.new_type_flag); ! ;} break; case 540: ! #line 2521 "parse.y" { yyungetc ('{', 1); current_aggr = yyvsp[-2].ttype; yyval.ftype.t = parse_handle_class_head (current_aggr, NULL_TREE, yyvsp[-1].ttype, 1, &yyval.ftype.new_type_flag); ! ;} break; case 541: ! #line 2529 "parse.y" { yyungetc (':', 1); current_aggr = yyvsp[-2].ttype; yyval.ftype.t = parse_handle_class_head (current_aggr, NULL_TREE, yyvsp[-1].ttype, 1, &yyval.ftype.new_type_flag); ! ;} break; case 542: ! #line 2537 "parse.y" { current_aggr = yyvsp[-1].ttype; yyval.ftype.t = TYPE_MAIN_DECL (parse_xref_tag (yyvsp[-1].ttype, *************** yyreduce: *** 8163,8222 **** CLASSTYPE_DECLARED_CLASS (TREE_TYPE (yyval.ftype.t)) = yyvsp[-1].ttype == class_type_node; yyungetc ('{', 1); ! } break; case 543: ! #line 2432 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 544: ! #line 2434 "parse.y" { error ("no bases given following `:'"); ! yyval.ttype = NULL_TREE; } break; case 545: ! #line 2437 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 547: ! #line 2443 "parse.y" ! { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); } break; case 548: ! #line 2448 "parse.y" ! { yyval.ttype = finish_base_specifier (access_default_node, yyvsp[0].ttype); } break; case 549: ! #line 2450 "parse.y" ! { yyval.ttype = finish_base_specifier (yyvsp[-2].ttype, yyvsp[0].ttype); } break; case 550: ! #line 2455 "parse.y" { if (!TYPE_P (yyval.ttype)) ! yyval.ttype = error_mark_node; } break; case 551: ! #line 2458 "parse.y" ! { yyval.ttype = TREE_TYPE (yyval.ttype); } break; case 553: ! #line 2464 "parse.y" { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL]) error ("`%D' access", yyvsp[-1].ttype); ! yyval.ttype = access_default_virtual_node; } break; case 554: ! #line 2468 "parse.y" { if (yyvsp[-2].ttype != access_default_virtual_node) error ("multiple access specifiers"); --- 8217,8276 ---- CLASSTYPE_DECLARED_CLASS (TREE_TYPE (yyval.ftype.t)) = yyvsp[-1].ttype == class_type_node; yyungetc ('{', 1); ! ;} break; case 543: ! #line 2551 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 544: ! #line 2553 "parse.y" { error ("no bases given following `:'"); ! yyval.ttype = NULL_TREE; ;} break; case 545: ! #line 2556 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 547: ! #line 2562 "parse.y" ! { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;} break; case 548: ! #line 2567 "parse.y" ! { yyval.ttype = finish_base_specifier (access_default_node, yyvsp[0].ttype); ;} break; case 549: ! #line 2569 "parse.y" ! { yyval.ttype = finish_base_specifier (yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; case 550: ! #line 2574 "parse.y" { if (!TYPE_P (yyval.ttype)) ! yyval.ttype = error_mark_node; ;} break; case 551: ! #line 2577 "parse.y" ! { yyval.ttype = TREE_TYPE (yyval.ttype); ;} break; case 553: ! #line 2583 "parse.y" { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL]) error ("`%D' access", yyvsp[-1].ttype); ! yyval.ttype = access_default_virtual_node; ;} break; case 554: ! #line 2587 "parse.y" { if (yyvsp[-2].ttype != access_default_virtual_node) error ("multiple access specifiers"); *************** yyreduce: *** 8226,8236 **** yyval.ttype = access_protected_virtual_node; else /* $2 == access_private_node */ yyval.ttype = access_private_virtual_node; ! } break; case 555: ! #line 2479 "parse.y" { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL]) error ("`%D' access", yyvsp[-1].ttype); else if (yyval.ttype == access_public_node) --- 8280,8290 ---- yyval.ttype = access_protected_virtual_node; else /* $2 == access_private_node */ yyval.ttype = access_private_virtual_node; ! ;} break; case 555: ! #line 2598 "parse.y" { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL]) error ("`%D' access", yyvsp[-1].ttype); else if (yyval.ttype == access_public_node) *************** yyreduce: *** 8241,8313 **** yyval.ttype = access_private_virtual_node; else error ("multiple `virtual' specifiers"); ! } break; case 560: ! #line 2500 "parse.y" { current_access_specifier = yyvsp[-1].ttype; ! } break; case 561: ! #line 2508 "parse.y" { finish_member_declaration (yyvsp[0].ttype); current_aggr = NULL_TREE; reset_type_access_control (); ! } break; case 562: ! #line 2514 "parse.y" { finish_member_declaration (yyvsp[0].ttype); current_aggr = NULL_TREE; reset_type_access_control (); ! } break; case 564: ! #line 2524 "parse.y" { error ("missing ';' before right brace"); ! yyungetc ('}', 0); } break; case 565: ! #line 2529 "parse.y" ! { yyval.ttype = finish_method (yyval.ttype); } break; case 566: ! #line 2531 "parse.y" ! { yyval.ttype = finish_method (yyval.ttype); } break; case 567: ! #line 2533 "parse.y" ! { yyval.ttype = finish_method (yyval.ttype); } break; case 568: ! #line 2535 "parse.y" ! { yyval.ttype = finish_method (yyval.ttype); } break; case 569: ! #line 2537 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 570: ! #line 2539 "parse.y" { yyval.ttype = yyvsp[0].ttype; ! pedantic = yyvsp[-1].itype; } break; case 571: ! #line 2542 "parse.y" { if (yyvsp[0].ttype) yyval.ttype = finish_member_template_decl (yyvsp[0].ttype); --- 8295,8367 ---- yyval.ttype = access_private_virtual_node; else error ("multiple `virtual' specifiers"); ! ;} break; case 560: ! #line 2619 "parse.y" { current_access_specifier = yyvsp[-1].ttype; ! ;} break; case 561: ! #line 2628 "parse.y" { finish_member_declaration (yyvsp[0].ttype); current_aggr = NULL_TREE; reset_type_access_control (); ! ;} break; case 562: ! #line 2634 "parse.y" { finish_member_declaration (yyvsp[0].ttype); current_aggr = NULL_TREE; reset_type_access_control (); ! ;} break; case 564: ! #line 2644 "parse.y" { error ("missing ';' before right brace"); ! yyungetc ('}', 0); ;} break; case 565: ! #line 2649 "parse.y" ! { yyval.ttype = finish_method (yyval.ttype); ;} break; case 566: ! #line 2651 "parse.y" ! { yyval.ttype = finish_method (yyval.ttype); ;} break; case 567: ! #line 2653 "parse.y" ! { yyval.ttype = finish_method (yyval.ttype); ;} break; case 568: ! #line 2655 "parse.y" ! { yyval.ttype = finish_method (yyval.ttype); ;} break; case 569: ! #line 2657 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 570: ! #line 2659 "parse.y" { yyval.ttype = yyvsp[0].ttype; ! pedantic = yyvsp[-1].itype; ;} break; case 571: ! #line 2662 "parse.y" { if (yyvsp[0].ttype) yyval.ttype = finish_member_template_decl (yyvsp[0].ttype); *************** yyreduce: *** 8316,8339 **** yyval.ttype = NULL_TREE; finish_template_decl (yyvsp[-1].ttype); ! } break; case 572: ! #line 2552 "parse.y" { yyval.ttype = finish_member_class_template (yyvsp[-1].ftype.t); finish_template_decl (yyvsp[-2].ttype); ! } break; case 573: ! #line 2557 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 574: ! #line 2563 "parse.y" { /* Most of the productions for component_decl only allow the creation of one new member, so we call --- 8370,8393 ---- yyval.ttype = NULL_TREE; finish_template_decl (yyvsp[-1].ttype); ! ;} break; case 572: ! #line 2672 "parse.y" { yyval.ttype = finish_member_class_template (yyvsp[-1].ftype.t); finish_template_decl (yyvsp[-2].ttype); ! ;} break; case 573: ! #line 2677 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 574: ! #line 2685 "parse.y" { /* Most of the productions for component_decl only allow the creation of one new member, so we call *************** yyreduce: *** 8353,8673 **** if (!yyvsp[0].itype) grok_x_components (yyvsp[-1].ftype.t); yyval.ttype = NULL_TREE; ! } break; case 575: ! #line 2584 "parse.y" { if (!yyvsp[0].itype) grok_x_components (yyvsp[-1].ftype.t); yyval.ttype = NULL_TREE; ! } break; case 576: ! #line 2590 "parse.y" ! { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, yyvsp[-1].ttype); } break; case 577: ! #line 2592 "parse.y" ! { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, yyvsp[-1].ttype); } break; case 578: ! #line 2594 "parse.y" ! { yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); } break; case 579: ! #line 2596 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 580: ! #line 2600 "parse.y" { tree specs, attrs; split_specs_attrs (yyvsp[-4].ftype.t, &specs, &attrs); yyval.ttype = grokfield (yyvsp[-3].ttype, specs, yyvsp[0].ttype, yyvsp[-2].ttype, ! chainon (yyvsp[-1].ttype, attrs)); } break; case 581: ! #line 2605 "parse.y" ! { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, yyvsp[-1].ttype); } break; case 582: ! #line 2607 "parse.y" ! { yyval.ttype = do_class_using_decl (yyvsp[0].ttype); } break; case 583: ! #line 2614 "parse.y" ! { yyval.itype = 0; } break; case 584: ! #line 2616 "parse.y" { if (PROCESSING_REAL_TEMPLATE_DECL_P ()) yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); finish_member_declaration (yyvsp[0].ttype); yyval.itype = 1; ! } break; case 585: ! #line 2623 "parse.y" { check_multiple_declarators (); if (PROCESSING_REAL_TEMPLATE_DECL_P ()) yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); finish_member_declaration (yyvsp[0].ttype); yyval.itype = 2; ! } break; case 586: ! #line 2634 "parse.y" ! { yyval.itype = 0; } break; case 587: ! #line 2636 "parse.y" { if (PROCESSING_REAL_TEMPLATE_DECL_P ()) yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); finish_member_declaration (yyvsp[0].ttype); yyval.itype = 1; ! } break; case 588: ! #line 2643 "parse.y" { check_multiple_declarators (); if (PROCESSING_REAL_TEMPLATE_DECL_P ()) yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); finish_member_declaration (yyvsp[0].ttype); yyval.itype = 2; ! } break; case 593: ! #line 2664 "parse.y" { yyval.ttype = parse_field0 (yyvsp[-3].ttype, yyvsp[-4].ftype.t, yyvsp[-4].ftype.lookups, ! yyvsp[-1].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); } break; case 594: ! #line 2667 "parse.y" { yyval.ttype = parse_bitfield0 (yyvsp[-3].ttype, yyvsp[-4].ftype.t, yyvsp[-4].ftype.lookups, ! yyvsp[0].ttype, yyvsp[-1].ttype); } break; case 595: ! #line 2673 "parse.y" { yyval.ttype = parse_field0 (yyvsp[-3].ttype, yyvsp[-4].ftype.t, yyvsp[-4].ftype.lookups, ! yyvsp[-1].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); } break; case 596: ! #line 2676 "parse.y" { yyval.ttype = parse_field0 (yyvsp[-3].ttype, yyvsp[-4].ftype.t, yyvsp[-4].ftype.lookups, ! yyvsp[-1].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); } break; case 597: ! #line 2679 "parse.y" { yyval.ttype = parse_bitfield0 (yyvsp[-3].ttype, yyvsp[-4].ftype.t, yyvsp[-4].ftype.lookups, ! yyvsp[0].ttype, yyvsp[-1].ttype); } break; case 598: ! #line 2682 "parse.y" { yyval.ttype = parse_bitfield0 (NULL_TREE, yyvsp[-3].ftype.t, ! yyvsp[-3].ftype.lookups, yyvsp[0].ttype, yyvsp[-1].ttype); } break; case 599: ! #line 2688 "parse.y" ! { yyval.ttype = parse_field (yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); } break; case 600: ! #line 2690 "parse.y" ! { yyval.ttype = parse_bitfield (yyvsp[-3].ttype, yyvsp[0].ttype, yyvsp[-1].ttype); } break; case 601: ! #line 2695 "parse.y" ! { yyval.ttype = parse_field (yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); } break; case 602: ! #line 2697 "parse.y" ! { yyval.ttype = parse_bitfield (yyvsp[-3].ttype, yyvsp[0].ttype, yyvsp[-1].ttype); } break; case 603: ! #line 2699 "parse.y" ! { yyval.ttype = parse_bitfield (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); } break; case 608: ! #line 2716 "parse.y" ! { build_enumerator (yyvsp[0].ttype, NULL_TREE, current_enum_type); } break; case 609: ! #line 2718 "parse.y" ! { build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype, current_enum_type); } break; case 610: ! #line 2724 "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 611: ! #line 2727 "parse.y" { yyval.ftype.t = build_tree_list (yyvsp[0].ftype.t, NULL_TREE); ! yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; } break; case 612: ! #line 2731 "parse.y" { if (pedantic) pedwarn ("ISO C++ forbids array dimensions with parenthesized type in new"); yyval.ftype.t = build_nt (ARRAY_REF, TREE_VALUE (yyvsp[-4].ftype.t), yyvsp[-1].ttype); yyval.ftype.t = build_tree_list (TREE_PURPOSE (yyvsp[-4].ftype.t), yyval.ftype.t); yyval.ftype.new_type_flag = yyvsp[-4].ftype.new_type_flag; ! } break; case 613: ! #line 2742 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 614: ! #line 2744 "parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); } break; case 615: ! #line 2749 "parse.y" { yyval.ftype.t = hash_tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ! yyval.ftype.new_type_flag = 0; } break; case 616: ! #line 2752 "parse.y" { yyval.ftype.t = hash_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; } break; case 617: ! #line 2755 "parse.y" { yyval.ftype.t = hash_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ! yyval.ftype.new_type_flag = 0; } break; case 618: ! #line 2758 "parse.y" { yyval.ftype.t = hash_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ftype.t); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; } break; case 619: ! #line 2767 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; } break; case 620: ! #line 2769 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; } break; case 621: ! #line 2771 "parse.y" ! { yyval.ttype = empty_parms (); } break; case 622: ! #line 2773 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 624: ! #line 2781 "parse.y" { /* Provide support for '(' attributes '*' declarator ')' etc */ yyval.ttype = tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ! } break; case 625: ! #line 2791 "parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); } break; case 626: ! #line 2793 "parse.y" ! { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); } break; case 627: ! #line 2795 "parse.y" ! { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); } break; case 628: ! #line 2797 "parse.y" ! { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); } break; case 629: ! #line 2799 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_nt (SCOPE_REF, yyvsp[-2].ttype, arg); ! } break; case 631: ! #line 2807 "parse.y" ! { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 632: ! #line 2809 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); } break; case 633: ! #line 2811 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, yyval.ttype, NULL_TREE); } break; case 634: ! #line 2813 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; } break; case 635: ! #line 2815 "parse.y" { push_nested_class (yyvsp[-1].ttype, 3); yyval.ttype = build_nt (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ! TREE_COMPLEXITY (yyval.ttype) = current_class_depth; } break; case 637: ! #line 2823 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) { --- 8407,8727 ---- if (!yyvsp[0].itype) grok_x_components (yyvsp[-1].ftype.t); yyval.ttype = NULL_TREE; ! ;} break; case 575: ! #line 2706 "parse.y" { if (!yyvsp[0].itype) grok_x_components (yyvsp[-1].ftype.t); yyval.ttype = NULL_TREE; ! ;} break; case 576: ! #line 2712 "parse.y" ! { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, yyvsp[-1].ttype); ;} break; case 577: ! #line 2714 "parse.y" ! { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, yyvsp[-1].ttype); ;} break; case 578: ! #line 2716 "parse.y" ! { yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;} break; case 579: ! #line 2718 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 580: ! #line 2729 "parse.y" { tree specs, attrs; split_specs_attrs (yyvsp[-4].ftype.t, &specs, &attrs); yyval.ttype = grokfield (yyvsp[-3].ttype, specs, yyvsp[0].ttype, yyvsp[-2].ttype, ! chainon (yyvsp[-1].ttype, attrs)); ;} break; case 581: ! #line 2734 "parse.y" ! { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, yyvsp[-1].ttype); ;} break; case 582: ! #line 2736 "parse.y" ! { yyval.ttype = do_class_using_decl (yyvsp[0].ttype); ;} break; case 583: ! #line 2743 "parse.y" ! { yyval.itype = 0; ;} break; case 584: ! #line 2745 "parse.y" { if (PROCESSING_REAL_TEMPLATE_DECL_P ()) yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); finish_member_declaration (yyvsp[0].ttype); yyval.itype = 1; ! ;} break; case 585: ! #line 2752 "parse.y" { check_multiple_declarators (); if (PROCESSING_REAL_TEMPLATE_DECL_P ()) yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); finish_member_declaration (yyvsp[0].ttype); yyval.itype = 2; ! ;} break; case 586: ! #line 2763 "parse.y" ! { yyval.itype = 0; ;} break; case 587: ! #line 2765 "parse.y" { if (PROCESSING_REAL_TEMPLATE_DECL_P ()) yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); finish_member_declaration (yyvsp[0].ttype); yyval.itype = 1; ! ;} break; case 588: ! #line 2772 "parse.y" { check_multiple_declarators (); if (PROCESSING_REAL_TEMPLATE_DECL_P ()) yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); finish_member_declaration (yyvsp[0].ttype); yyval.itype = 2; ! ;} break; case 593: ! #line 2793 "parse.y" { yyval.ttype = parse_field0 (yyvsp[-3].ttype, yyvsp[-4].ftype.t, yyvsp[-4].ftype.lookups, ! yyvsp[-1].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; case 594: ! #line 2796 "parse.y" { yyval.ttype = parse_bitfield0 (yyvsp[-3].ttype, yyvsp[-4].ftype.t, yyvsp[-4].ftype.lookups, ! yyvsp[0].ttype, yyvsp[-1].ttype); ;} break; case 595: ! #line 2802 "parse.y" { yyval.ttype = parse_field0 (yyvsp[-3].ttype, yyvsp[-4].ftype.t, yyvsp[-4].ftype.lookups, ! yyvsp[-1].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; case 596: ! #line 2805 "parse.y" { yyval.ttype = parse_field0 (yyvsp[-3].ttype, yyvsp[-4].ftype.t, yyvsp[-4].ftype.lookups, ! yyvsp[-1].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; case 597: ! #line 2808 "parse.y" { yyval.ttype = parse_bitfield0 (yyvsp[-3].ttype, yyvsp[-4].ftype.t, yyvsp[-4].ftype.lookups, ! yyvsp[0].ttype, yyvsp[-1].ttype); ;} break; case 598: ! #line 2811 "parse.y" { yyval.ttype = parse_bitfield0 (NULL_TREE, yyvsp[-3].ftype.t, ! yyvsp[-3].ftype.lookups, yyvsp[0].ttype, yyvsp[-1].ttype); ;} break; case 599: ! #line 2817 "parse.y" ! { yyval.ttype = parse_field (yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; case 600: ! #line 2819 "parse.y" ! { yyval.ttype = parse_bitfield (yyvsp[-3].ttype, yyvsp[0].ttype, yyvsp[-1].ttype); ;} break; case 601: ! #line 2824 "parse.y" ! { yyval.ttype = parse_field (yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; case 602: ! #line 2826 "parse.y" ! { yyval.ttype = parse_bitfield (yyvsp[-3].ttype, yyvsp[0].ttype, yyvsp[-1].ttype); ;} break; case 603: ! #line 2828 "parse.y" ! { yyval.ttype = parse_bitfield (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;} break; case 608: ! #line 2847 "parse.y" ! { build_enumerator (yyvsp[0].ttype, NULL_TREE, current_enum_type); ;} break; case 609: ! #line 2849 "parse.y" ! { build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype, current_enum_type); ;} break; case 610: ! #line 2855 "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 611: ! #line 2858 "parse.y" { yyval.ftype.t = build_tree_list (yyvsp[0].ftype.t, NULL_TREE); ! yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;} break; case 612: ! #line 2863 "parse.y" { if (pedantic) pedwarn ("ISO C++ forbids array dimensions with parenthesized type in new"); yyval.ftype.t = build_nt (ARRAY_REF, TREE_VALUE (yyvsp[-4].ftype.t), yyvsp[-1].ttype); yyval.ftype.t = build_tree_list (TREE_PURPOSE (yyvsp[-4].ftype.t), yyval.ftype.t); yyval.ftype.new_type_flag = yyvsp[-4].ftype.new_type_flag; ! ;} break; case 613: ! #line 2874 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 614: ! #line 2876 "parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;} break; case 615: ! #line 2881 "parse.y" { yyval.ftype.t = hash_tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ! yyval.ftype.new_type_flag = 0; ;} break; case 616: ! #line 2884 "parse.y" { yyval.ftype.t = hash_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;} break; case 617: ! #line 2887 "parse.y" { yyval.ftype.t = hash_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ! yyval.ftype.new_type_flag = 0; ;} break; case 618: ! #line 2890 "parse.y" { yyval.ftype.t = hash_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ftype.t); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;} break; case 619: ! #line 2900 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; ;} break; case 620: ! #line 2902 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; ;} break; case 621: ! #line 2904 "parse.y" ! { yyval.ttype = empty_parms (); ;} break; case 622: ! #line 2906 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 624: ! #line 2914 "parse.y" { /* Provide support for '(' attributes '*' declarator ')' etc */ yyval.ttype = tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ! ;} break; case 625: ! #line 2924 "parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;} break; case 626: ! #line 2926 "parse.y" ! { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;} break; case 627: ! #line 2928 "parse.y" ! { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;} break; case 628: ! #line 2930 "parse.y" ! { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;} break; case 629: ! #line 2932 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_nt (SCOPE_REF, yyvsp[-2].ttype, arg); ! ;} break; case 631: ! #line 2940 "parse.y" ! { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 632: ! #line 2942 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;} break; case 633: ! #line 2944 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, yyval.ttype, NULL_TREE); ;} break; case 634: ! #line 2946 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; ;} break; case 635: ! #line 2948 "parse.y" { push_nested_class (yyvsp[-1].ttype, 3); yyval.ttype = build_nt (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ! TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ;} break; case 637: ! #line 2956 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) { *************** yyreduce: *** 8676,8882 **** } else yyval.ttype = yyvsp[0].ttype; ! } break; case 638: ! #line 2833 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype); else yyval.ttype = yyvsp[0].ttype; got_scope = NULL_TREE; ! } break; case 641: ! #line 2846 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 642: ! #line 2851 "parse.y" ! { yyval.ttype = get_type_decl (yyvsp[0].ttype); } break; case 644: ! #line 2859 "parse.y" { /* Provide support for '(' attributes '*' declarator ')' etc */ yyval.ttype = tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ! } break; case 645: ! #line 2868 "parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); } break; case 646: ! #line 2870 "parse.y" ! { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); } break; case 647: ! #line 2872 "parse.y" ! { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); } break; case 648: ! #line 2874 "parse.y" ! { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); } break; case 649: ! #line 2876 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_nt (SCOPE_REF, yyvsp[-2].ttype, arg); ! } break; case 651: ! #line 2884 "parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); } break; case 652: ! #line 2886 "parse.y" ! { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); } break; case 653: ! #line 2888 "parse.y" ! { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); } break; case 654: ! #line 2890 "parse.y" ! { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); } break; case 655: ! #line 2892 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_nt (SCOPE_REF, yyvsp[-2].ttype, arg); ! } break; case 657: ! #line 2900 "parse.y" ! { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 658: ! #line 2902 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; } break; case 659: ! #line 2904 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); } break; case 660: ! #line 2906 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, yyval.ttype, NULL_TREE); } break; case 661: ! #line 2908 "parse.y" ! { enter_scope_of (yyvsp[0].ttype); } break; case 662: ! #line 2910 "parse.y" ! { enter_scope_of (yyvsp[0].ttype); yyval.ttype = yyvsp[0].ttype;} break; case 663: ! #line 2912 "parse.y" { yyval.ttype = build_nt (SCOPE_REF, global_namespace, yyvsp[0].ttype); enter_scope_of (yyval.ttype); ! } break; case 664: ! #line 2916 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_nt (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); enter_scope_of (yyval.ttype); ! } break; case 665: ! #line 2924 "parse.y" { got_scope = NULL_TREE; ! yyval.ttype = build_nt (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); } break; case 666: ! #line 2927 "parse.y" { got_scope = NULL_TREE; ! yyval.ttype = build_nt (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 667: ! #line 2933 "parse.y" { got_scope = NULL_TREE; ! yyval.ttype = build_nt (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); } break; case 668: ! #line 2936 "parse.y" { got_scope = NULL_TREE; ! yyval.ttype = build_nt (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 670: ! #line 2943 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 671: ! #line 2948 "parse.y" ! { yyval.ttype = build_functional_cast (yyvsp[-3].ftype.t, yyvsp[-1].ttype); } break; case 672: ! #line 2950 "parse.y" ! { yyval.ttype = reparse_decl_as_expr (yyvsp[-3].ftype.t, yyvsp[-1].ttype); } break; case 673: ! #line 2952 "parse.y" ! { yyval.ttype = reparse_absdcl_as_expr (yyvsp[-1].ftype.t, yyvsp[0].ttype); } break; case 678: ! #line 2964 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 679: ! #line 2966 "parse.y" { got_scope = yyval.ttype ! = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype, tf_error | tf_parsing); } break; case 680: ! #line 2970 "parse.y" { got_scope = yyval.ttype ! = make_typename_type (yyvsp[-2].ttype, yyvsp[-1].ttype, tf_error | tf_parsing); } break; case 681: ! #line 2973 "parse.y" { got_scope = yyval.ttype ! = make_typename_type (yyvsp[-2].ttype, yyvsp[-1].ttype, tf_error | tf_parsing); } break; case 682: ! #line 2980 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE) { --- 8730,8936 ---- } else yyval.ttype = yyvsp[0].ttype; ! ;} break; case 638: ! #line 2966 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype); else yyval.ttype = yyvsp[0].ttype; got_scope = NULL_TREE; ! ;} break; case 641: ! #line 2979 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 642: ! #line 2984 "parse.y" ! { yyval.ttype = get_type_decl (yyvsp[0].ttype); ;} break; case 644: ! #line 2993 "parse.y" { /* Provide support for '(' attributes '*' declarator ')' etc */ yyval.ttype = tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ! ;} break; case 645: ! #line 3002 "parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;} break; case 646: ! #line 3004 "parse.y" ! { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;} break; case 647: ! #line 3006 "parse.y" ! { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;} break; case 648: ! #line 3008 "parse.y" ! { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;} break; case 649: ! #line 3010 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_nt (SCOPE_REF, yyvsp[-2].ttype, arg); ! ;} break; case 651: ! #line 3018 "parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;} break; case 652: ! #line 3020 "parse.y" ! { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;} break; case 653: ! #line 3022 "parse.y" ! { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;} break; case 654: ! #line 3024 "parse.y" ! { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;} break; case 655: ! #line 3026 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_nt (SCOPE_REF, yyvsp[-2].ttype, arg); ! ;} break; case 657: ! #line 3034 "parse.y" ! { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 658: ! #line 3036 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; ;} break; case 659: ! #line 3038 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;} break; case 660: ! #line 3040 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, yyval.ttype, NULL_TREE); ;} break; case 661: ! #line 3042 "parse.y" ! { enter_scope_of (yyvsp[0].ttype); ;} break; case 662: ! #line 3044 "parse.y" ! { enter_scope_of (yyvsp[0].ttype); yyval.ttype = yyvsp[0].ttype;;} break; case 663: ! #line 3046 "parse.y" { yyval.ttype = build_nt (SCOPE_REF, global_namespace, yyvsp[0].ttype); enter_scope_of (yyval.ttype); ! ;} break; case 664: ! #line 3050 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_nt (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); enter_scope_of (yyval.ttype); ! ;} break; case 665: ! #line 3058 "parse.y" { got_scope = NULL_TREE; ! yyval.ttype = build_nt (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;} break; case 666: ! #line 3061 "parse.y" { got_scope = NULL_TREE; ! yyval.ttype = build_nt (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 667: ! #line 3067 "parse.y" { got_scope = NULL_TREE; ! yyval.ttype = build_nt (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;} break; case 668: ! #line 3070 "parse.y" { got_scope = NULL_TREE; ! yyval.ttype = build_nt (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 670: ! #line 3077 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 671: ! #line 3082 "parse.y" ! { yyval.ttype = build_functional_cast (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ;} break; case 672: ! #line 3084 "parse.y" ! { yyval.ttype = reparse_decl_as_expr (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ;} break; case 673: ! #line 3086 "parse.y" ! { yyval.ttype = reparse_absdcl_as_expr (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;} break; case 678: ! #line 3098 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 679: ! #line 3100 "parse.y" { got_scope = yyval.ttype ! = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype, tf_error | tf_parsing); ;} break; case 680: ! #line 3104 "parse.y" { got_scope = yyval.ttype ! = make_typename_type (yyvsp[-2].ttype, yyvsp[-1].ttype, tf_error | tf_parsing); ;} break; case 681: ! #line 3107 "parse.y" { got_scope = yyval.ttype ! = make_typename_type (yyvsp[-2].ttype, yyvsp[-1].ttype, tf_error | tf_parsing); ;} break; case 682: ! #line 3115 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE) { *************** yyreduce: *** 8885,8923 **** } got_scope = yyval.ttype = complete_type (TYPE_MAIN_VARIANT (TREE_TYPE (yyval.ttype))); ! } break; case 683: ! #line 2990 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype = TREE_TYPE (yyval.ttype); ! } break; case 684: ! #line 2996 "parse.y" { if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype; ! } break; case 685: ! #line 3002 "parse.y" ! { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyvsp[-1].ttype)); } break; case 687: ! #line 3008 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 688: ! #line 3013 "parse.y" { if (TYPE_P (yyvsp[-1].ttype)) yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype, tf_error | tf_parsing); --- 8939,8977 ---- } got_scope = yyval.ttype = complete_type (TYPE_MAIN_VARIANT (TREE_TYPE (yyval.ttype))); ! ;} break; case 683: ! #line 3125 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype = TREE_TYPE (yyval.ttype); ! ;} break; case 684: ! #line 3131 "parse.y" { if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype; ! ;} break; case 685: ! #line 3137 "parse.y" ! { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyvsp[-1].ttype)); ;} break; case 687: ! #line 3143 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 688: ! #line 3148 "parse.y" { if (TYPE_P (yyvsp[-1].ttype)) yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype, tf_error | tf_parsing); *************** yyreduce: *** 8929,8964 **** if (TREE_CODE (yyval.ttype) == TYPE_DECL) yyval.ttype = TREE_TYPE (yyval.ttype); } ! } break; case 689: ! #line 3026 "parse.y" ! { yyval.ttype = TREE_TYPE (yyvsp[0].ttype); } break; case 690: ! #line 3028 "parse.y" ! { yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype, tf_error | tf_parsing); } break; case 691: ! #line 3030 "parse.y" ! { yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[0].ttype, tf_error | tf_parsing); } break; case 692: ! #line 3035 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) error ("`%T' is not a class or namespace", yyvsp[0].ttype); else if (TREE_CODE (yyvsp[0].ttype) == TYPE_DECL) yyval.ttype = TREE_TYPE (yyvsp[0].ttype); ! } break; case 693: ! #line 3042 "parse.y" { if (TYPE_P (yyvsp[-1].ttype)) yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype, tf_error | tf_parsing); --- 8983,9018 ---- if (TREE_CODE (yyval.ttype) == TYPE_DECL) yyval.ttype = TREE_TYPE (yyval.ttype); } ! ;} break; case 689: ! #line 3161 "parse.y" ! { yyval.ttype = TREE_TYPE (yyvsp[0].ttype); ;} break; case 690: ! #line 3163 "parse.y" ! { yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype, tf_error | tf_parsing); ;} break; case 691: ! #line 3165 "parse.y" ! { yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[0].ttype, tf_error | tf_parsing); ;} break; case 692: ! #line 3170 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) error ("`%T' is not a class or namespace", yyvsp[0].ttype); else if (TREE_CODE (yyvsp[0].ttype) == TYPE_DECL) yyval.ttype = TREE_TYPE (yyvsp[0].ttype); ! ;} break; case 693: ! #line 3177 "parse.y" { if (TYPE_P (yyvsp[-1].ttype)) yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype, tf_error | tf_parsing); *************** yyreduce: *** 8970,8992 **** if (TREE_CODE (yyval.ttype) == TYPE_DECL) yyval.ttype = TREE_TYPE (yyval.ttype); } ! } break; case 694: ! #line 3055 "parse.y" { got_scope = yyval.ttype ! = make_typename_type (yyvsp[-2].ttype, yyvsp[-1].ttype, tf_error | tf_parsing); } break; case 695: ! #line 3058 "parse.y" { got_scope = yyval.ttype ! = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype, tf_error | tf_parsing); } break; case 696: ! #line 3065 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) != TYPE_DECL) yyval.ttype = lastiddecl; --- 9024,9046 ---- if (TREE_CODE (yyval.ttype) == TYPE_DECL) yyval.ttype = TREE_TYPE (yyval.ttype); } ! ;} break; case 694: ! #line 3190 "parse.y" { got_scope = yyval.ttype ! = make_typename_type (yyvsp[-2].ttype, yyvsp[-1].ttype, tf_error | tf_parsing); ;} break; case 695: ! #line 3193 "parse.y" { got_scope = yyval.ttype ! = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype, tf_error | tf_parsing); ;} break; case 696: ! #line 3201 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) != TYPE_DECL) yyval.ttype = lastiddecl; *************** yyreduce: *** 8997,9571 **** if (yyval.ttype == error_mark_node) error ("`%T' is not a class or namespace", yyvsp[-1].ttype); ! } break; case 697: ! #line 3077 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) != TYPE_DECL) yyval.ttype = lastiddecl; got_scope = complete_type (TREE_TYPE (yyval.ttype)); ! } break; case 698: ! #line 3083 "parse.y" ! { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); } break; case 701: ! #line 3087 "parse.y" { if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype; ! } break; case 702: ! #line 3096 "parse.y" ! { yyval.ttype = build_min_nt (TEMPLATE_ID_EXPR, yyvsp[-3].ttype, yyvsp[-1].ttype); } break; case 703: ! #line 3101 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype); else yyval.ttype = yyvsp[0].ttype; got_scope = NULL_TREE; ! } break; case 705: ! #line 3110 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 706: ! #line 3115 "parse.y" ! { got_scope = NULL_TREE; } break; case 707: ! #line 3117 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; } break; case 708: ! #line 3123 "parse.y" ! { got_scope = void_type_node; } break; case 709: ! #line 3129 "parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 710: ! #line 3131 "parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); } break; case 711: ! #line 3133 "parse.y" ! { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 712: ! #line 3135 "parse.y" ! { yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); } break; case 713: ! #line 3137 "parse.y" { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); yyval.ttype = build_nt (SCOPE_REF, yyvsp[-1].ttype, arg); ! } break; case 714: ! #line 3141 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_nt (SCOPE_REF, yyvsp[-2].ttype, arg); ! } break; case 716: ! #line 3150 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); } break; case 717: ! #line 3152 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); } break; case 719: ! #line 3158 "parse.y" { /* Provide support for '(' attributes '*' declarator ')' etc */ yyval.ttype = tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ! } break; case 720: ! #line 3168 "parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); } break; case 721: ! #line 3170 "parse.y" ! { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); } break; case 722: ! #line 3172 "parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[0].ftype.t, NULL_TREE); } break; case 723: ! #line 3174 "parse.y" ! { yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); } break; case 724: ! #line 3176 "parse.y" ! { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); } break; case 725: ! #line 3178 "parse.y" ! { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); } break; case 726: ! #line 3180 "parse.y" ! { yyval.ttype = make_reference_declarator (yyvsp[0].ftype.t, NULL_TREE); } break; case 727: ! #line 3182 "parse.y" ! { yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); } break; case 728: ! #line 3184 "parse.y" { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); yyval.ttype = build_nt (SCOPE_REF, yyvsp[-1].ttype, arg); ! } break; case 729: ! #line 3188 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_nt (SCOPE_REF, yyvsp[-2].ttype, arg); ! } break; case 731: ! #line 3197 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; } break; case 732: ! #line 3200 "parse.y" ! { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 733: ! #line 3202 "parse.y" ! { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 734: ! #line 3204 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); } break; case 735: ! #line 3206 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, yyval.ttype, NULL_TREE); } break; case 736: ! #line 3208 "parse.y" ! { yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 737: ! #line 3210 "parse.y" ! { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 738: ! #line 3212 "parse.y" ! { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 739: ! #line 3214 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); } break; case 740: ! #line 3216 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); } break; case 747: ! #line 3236 "parse.y" { if (pedantic) ! pedwarn ("ISO C++ forbids label declarations"); } break; case 750: ! #line 3247 "parse.y" { while (yyvsp[-1].ttype) { finish_label_decl (TREE_VALUE (yyvsp[-1].ttype)); yyvsp[-1].ttype = TREE_CHAIN (yyvsp[-1].ttype); } ! } break; case 751: ! #line 3258 "parse.y" ! { yyval.ttype = begin_compound_stmt (0); } break; case 752: ! #line 3260 "parse.y" { STMT_LINENO (yyvsp[-1].ttype) = yyvsp[-3].itype; ! finish_compound_stmt (0, yyvsp[-1].ttype); } break; case 753: ! #line 3266 "parse.y" ! { last_expr_type = NULL_TREE; } break; case 754: ! #line 3271 "parse.y" { yyval.ttype = begin_if_stmt (); ! cond_stmt_keyword = "if"; } break; case 755: ! #line 3274 "parse.y" ! { finish_if_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); } break; case 756: ! #line 3276 "parse.y" { yyval.ttype = yyvsp[-3].ttype; ! finish_then_clause (yyvsp[-3].ttype); } break; case 758: ! #line 3283 "parse.y" ! { yyval.ttype = begin_compound_stmt (0); } break; case 759: ! #line 3285 "parse.y" { STMT_LINENO (yyvsp[-2].ttype) = yyvsp[-1].itype; if (yyvsp[0].ttype) STMT_LINENO (yyvsp[0].ttype) = yyvsp[-1].itype; ! finish_compound_stmt (0, yyvsp[-2].ttype); } break; case 761: ! #line 3293 "parse.y" ! { if (yyvsp[0].ttype) STMT_LINENO (yyvsp[0].ttype) = yyvsp[-1].itype; } break; case 762: ! #line 3298 "parse.y" { finish_stmt (); ! yyval.ttype = NULL_TREE; } break; case 763: ! #line 3301 "parse.y" ! { yyval.ttype = finish_expr_stmt (yyvsp[-1].ttype); } break; case 764: ! #line 3303 "parse.y" ! { begin_else_clause (); } break; case 765: ! #line 3305 "parse.y" { yyval.ttype = yyvsp[-3].ttype; finish_else_clause (yyvsp[-3].ttype); finish_if_stmt (); ! } break; case 766: ! #line 3311 "parse.y" { yyval.ttype = yyvsp[0].ttype; ! finish_if_stmt (); } break; case 767: ! #line 3314 "parse.y" { yyval.ttype = begin_while_stmt (); cond_stmt_keyword = "while"; ! } break; case 768: ! #line 3319 "parse.y" ! { finish_while_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); } break; case 769: ! #line 3321 "parse.y" { yyval.ttype = yyvsp[-3].ttype; ! finish_while_stmt (yyvsp[-3].ttype); } break; case 770: ! #line 3324 "parse.y" ! { yyval.ttype = begin_do_stmt (); } break; case 771: ! #line 3326 "parse.y" { finish_do_body (yyvsp[-2].ttype); cond_stmt_keyword = "do"; ! } break; case 772: ! #line 3331 "parse.y" { yyval.ttype = yyvsp[-5].ttype; ! finish_do_stmt (yyvsp[-1].ttype, yyvsp[-5].ttype); } break; case 773: ! #line 3334 "parse.y" ! { yyval.ttype = begin_for_stmt (); } break; case 774: ! #line 3336 "parse.y" ! { finish_for_init_stmt (yyvsp[-2].ttype); } break; case 775: ! #line 3338 "parse.y" ! { finish_for_cond (yyvsp[-1].ttype, yyvsp[-5].ttype); } break; case 776: ! #line 3340 "parse.y" ! { finish_for_expr (yyvsp[-1].ttype, yyvsp[-8].ttype); } break; case 777: ! #line 3342 "parse.y" { yyval.ttype = yyvsp[-10].ttype; ! finish_for_stmt (yyvsp[-10].ttype); } break; case 778: ! #line 3345 "parse.y" ! { yyval.ttype = begin_switch_stmt (); } break; case 779: ! #line 3347 "parse.y" ! { finish_switch_cond (yyvsp[-1].ttype, yyvsp[-3].ttype); } break; case 780: ! #line 3349 "parse.y" { yyval.ttype = yyvsp[-5].ttype; ! finish_switch_stmt (yyvsp[-5].ttype); } break; case 781: ! #line 3352 "parse.y" ! { yyval.ttype = finish_case_label (yyvsp[-1].ttype, NULL_TREE); } break; case 782: ! #line 3354 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; } break; case 783: ! #line 3356 "parse.y" ! { yyval.ttype = finish_case_label (yyvsp[-3].ttype, yyvsp[-1].ttype); } break; case 784: ! #line 3358 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; } break; case 785: ! #line 3360 "parse.y" ! { yyval.ttype = finish_case_label (NULL_TREE, NULL_TREE); } break; case 786: ! #line 3362 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; } break; case 787: ! #line 3364 "parse.y" ! { yyval.ttype = finish_break_stmt (); } break; case 788: ! #line 3366 "parse.y" ! { yyval.ttype = finish_continue_stmt (); } break; case 789: ! #line 3368 "parse.y" ! { yyval.ttype = finish_return_stmt (NULL_TREE); } break; case 790: ! #line 3370 "parse.y" ! { yyval.ttype = finish_return_stmt (yyvsp[-1].ttype); } break; case 791: ! #line 3372 "parse.y" { yyval.ttype = finish_asm_stmt (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE, NULL_TREE); ! ASM_INPUT_P (yyval.ttype) = 1; } break; case 792: ! #line 3377 "parse.y" ! { yyval.ttype = finish_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE); } break; case 793: ! #line 3381 "parse.y" ! { yyval.ttype = finish_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); } break; case 794: ! #line 3383 "parse.y" ! { yyval.ttype = finish_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, NULL_TREE, yyvsp[-2].ttype, NULL_TREE); } break; case 795: ! #line 3387 "parse.y" ! { yyval.ttype = finish_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); } break; case 796: ! #line 3390 "parse.y" ! { yyval.ttype = finish_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, NULL_TREE, yyvsp[-4].ttype, yyvsp[-2].ttype); } break; case 797: ! #line 3393 "parse.y" ! { yyval.ttype = finish_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, NULL_TREE, yyvsp[-2].ttype); } break; case 798: ! #line 3395 "parse.y" { if (pedantic) pedwarn ("ISO C++ forbids computed gotos"); yyval.ttype = finish_goto_stmt (yyvsp[-1].ttype); ! } break; case 799: ! #line 3401 "parse.y" ! { yyval.ttype = finish_goto_stmt (yyvsp[-1].ttype); } break; case 800: ! #line 3403 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 801: ! #line 3405 "parse.y" { error ("label must be followed by statement"); yyungetc ('}', 0); ! yyval.ttype = NULL_TREE; } break; case 802: ! #line 3409 "parse.y" { finish_stmt (); ! yyval.ttype = NULL_TREE; } break; case 803: ! #line 3412 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 804: ! #line 3414 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 805: ! #line 3416 "parse.y" { do_local_using_decl (yyvsp[0].ttype); ! yyval.ttype = NULL_TREE; } break; case 806: ! #line 3419 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 807: ! #line 3424 "parse.y" ! { yyval.ttype = begin_function_try_block (); } break; case 808: ! #line 3426 "parse.y" ! { finish_function_try_block (yyvsp[-1].ttype); } break; case 809: ! #line 3428 "parse.y" ! { finish_function_handler_sequence (yyvsp[-3].ttype); } break; case 810: ! #line 3433 "parse.y" ! { yyval.ttype = begin_try_block (); } break; case 811: ! #line 3435 "parse.y" ! { finish_try_block (yyvsp[-1].ttype); } break; case 812: ! #line 3437 "parse.y" ! { finish_handler_sequence (yyvsp[-3].ttype); } break; case 815: ! #line 3444 "parse.y" { /* Generate a fake handler block to avoid later aborts. */ tree fake_handler = begin_handler (); finish_handler_parms (NULL_TREE, fake_handler); --- 9051,9625 ---- if (yyval.ttype == error_mark_node) error ("`%T' is not a class or namespace", yyvsp[-1].ttype); ! ;} break; case 697: ! #line 3213 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) != TYPE_DECL) yyval.ttype = lastiddecl; got_scope = complete_type (TREE_TYPE (yyval.ttype)); ! ;} break; case 698: ! #line 3219 "parse.y" ! { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); ;} break; case 701: ! #line 3223 "parse.y" { if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype; ! ;} break; case 702: ! #line 3232 "parse.y" ! { yyval.ttype = build_min_nt (TEMPLATE_ID_EXPR, yyvsp[-3].ttype, yyvsp[-1].ttype); ;} break; case 703: ! #line 3237 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype); else yyval.ttype = yyvsp[0].ttype; got_scope = NULL_TREE; ! ;} break; case 705: ! #line 3246 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 706: ! #line 3251 "parse.y" ! { got_scope = NULL_TREE; ;} break; case 707: ! #line 3253 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ;} break; case 708: ! #line 3260 "parse.y" ! { got_scope = void_type_node; ;} break; case 709: ! #line 3266 "parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 710: ! #line 3268 "parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;} break; case 711: ! #line 3270 "parse.y" ! { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 712: ! #line 3272 "parse.y" ! { yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;} break; case 713: ! #line 3274 "parse.y" { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); yyval.ttype = build_nt (SCOPE_REF, yyvsp[-1].ttype, arg); ! ;} break; case 714: ! #line 3278 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_nt (SCOPE_REF, yyvsp[-2].ttype, arg); ! ;} break; case 716: ! #line 3287 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;} break; case 717: ! #line 3289 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;} break; case 719: ! #line 3295 "parse.y" { /* Provide support for '(' attributes '*' declarator ')' etc */ yyval.ttype = tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ! ;} break; case 720: ! #line 3305 "parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;} break; case 721: ! #line 3307 "parse.y" ! { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;} break; case 722: ! #line 3309 "parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[0].ftype.t, NULL_TREE); ;} break; case 723: ! #line 3311 "parse.y" ! { yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ;} break; case 724: ! #line 3313 "parse.y" ! { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;} break; case 725: ! #line 3315 "parse.y" ! { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;} break; case 726: ! #line 3317 "parse.y" ! { yyval.ttype = make_reference_declarator (yyvsp[0].ftype.t, NULL_TREE); ;} break; case 727: ! #line 3319 "parse.y" ! { yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ;} break; case 728: ! #line 3321 "parse.y" { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); yyval.ttype = build_nt (SCOPE_REF, yyvsp[-1].ttype, arg); ! ;} break; case 729: ! #line 3325 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_nt (SCOPE_REF, yyvsp[-2].ttype, arg); ! ;} break; case 731: ! #line 3334 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; ;} break; case 732: ! #line 3337 "parse.y" ! { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 733: ! #line 3339 "parse.y" ! { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 734: ! #line 3341 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;} break; case 735: ! #line 3343 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, yyval.ttype, NULL_TREE); ;} break; case 736: ! #line 3345 "parse.y" ! { yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 737: ! #line 3347 "parse.y" ! { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 738: ! #line 3349 "parse.y" ! { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 739: ! #line 3351 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;} break; case 740: ! #line 3353 "parse.y" ! { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ;} break; case 747: ! #line 3376 "parse.y" { if (pedantic) ! pedwarn ("ISO C++ forbids label declarations"); ;} break; case 750: ! #line 3387 "parse.y" { while (yyvsp[-1].ttype) { finish_label_decl (TREE_VALUE (yyvsp[-1].ttype)); yyvsp[-1].ttype = TREE_CHAIN (yyvsp[-1].ttype); } ! ;} break; case 751: ! #line 3398 "parse.y" ! { yyval.ttype = begin_compound_stmt (0); ;} break; case 752: ! #line 3400 "parse.y" { STMT_LINENO (yyvsp[-1].ttype) = yyvsp[-3].itype; ! finish_compound_stmt (0, yyvsp[-1].ttype); ;} break; case 753: ! #line 3406 "parse.y" ! { last_expr_type = NULL_TREE; ;} break; case 754: ! #line 3411 "parse.y" { yyval.ttype = begin_if_stmt (); ! cond_stmt_keyword = "if"; ;} break; case 755: ! #line 3414 "parse.y" ! { finish_if_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ;} break; case 756: ! #line 3416 "parse.y" { yyval.ttype = yyvsp[-3].ttype; ! finish_then_clause (yyvsp[-3].ttype); ;} break; case 758: ! #line 3423 "parse.y" ! { yyval.ttype = begin_compound_stmt (0); ;} break; case 759: ! #line 3425 "parse.y" { STMT_LINENO (yyvsp[-2].ttype) = yyvsp[-1].itype; if (yyvsp[0].ttype) STMT_LINENO (yyvsp[0].ttype) = yyvsp[-1].itype; ! finish_compound_stmt (0, yyvsp[-2].ttype); ;} break; case 761: ! #line 3433 "parse.y" ! { if (yyvsp[0].ttype) STMT_LINENO (yyvsp[0].ttype) = yyvsp[-1].itype; ;} break; case 762: ! #line 3438 "parse.y" { finish_stmt (); ! yyval.ttype = NULL_TREE; ;} break; case 763: ! #line 3441 "parse.y" ! { yyval.ttype = finish_expr_stmt (yyvsp[-1].ttype); ;} break; case 764: ! #line 3443 "parse.y" ! { begin_else_clause (); ;} break; case 765: ! #line 3445 "parse.y" { yyval.ttype = yyvsp[-3].ttype; finish_else_clause (yyvsp[-3].ttype); finish_if_stmt (); ! ;} break; case 766: ! #line 3451 "parse.y" { yyval.ttype = yyvsp[0].ttype; ! finish_if_stmt (); ;} break; case 767: ! #line 3454 "parse.y" { yyval.ttype = begin_while_stmt (); cond_stmt_keyword = "while"; ! ;} break; case 768: ! #line 3459 "parse.y" ! { finish_while_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ;} break; case 769: ! #line 3461 "parse.y" { yyval.ttype = yyvsp[-3].ttype; ! finish_while_stmt (yyvsp[-3].ttype); ;} break; case 770: ! #line 3464 "parse.y" ! { yyval.ttype = begin_do_stmt (); ;} break; case 771: ! #line 3466 "parse.y" { finish_do_body (yyvsp[-2].ttype); cond_stmt_keyword = "do"; ! ;} break; case 772: ! #line 3471 "parse.y" { yyval.ttype = yyvsp[-5].ttype; ! finish_do_stmt (yyvsp[-1].ttype, yyvsp[-5].ttype); ;} break; case 773: ! #line 3474 "parse.y" ! { yyval.ttype = begin_for_stmt (); ;} break; case 774: ! #line 3476 "parse.y" ! { finish_for_init_stmt (yyvsp[-2].ttype); ;} break; case 775: ! #line 3478 "parse.y" ! { finish_for_cond (yyvsp[-1].ttype, yyvsp[-5].ttype); ;} break; case 776: ! #line 3480 "parse.y" ! { finish_for_expr (yyvsp[-1].ttype, yyvsp[-8].ttype); ;} break; case 777: ! #line 3482 "parse.y" { yyval.ttype = yyvsp[-10].ttype; ! finish_for_stmt (yyvsp[-10].ttype); ;} break; case 778: ! #line 3485 "parse.y" ! { yyval.ttype = begin_switch_stmt (); ;} break; case 779: ! #line 3487 "parse.y" ! { finish_switch_cond (yyvsp[-1].ttype, yyvsp[-3].ttype); ;} break; case 780: ! #line 3489 "parse.y" { yyval.ttype = yyvsp[-5].ttype; ! finish_switch_stmt (yyvsp[-5].ttype); ;} break; case 781: ! #line 3492 "parse.y" ! { yyval.ttype = finish_case_label (yyvsp[-1].ttype, NULL_TREE); ;} break; case 782: ! #line 3494 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; ;} break; case 783: ! #line 3496 "parse.y" ! { yyval.ttype = finish_case_label (yyvsp[-3].ttype, yyvsp[-1].ttype); ;} break; case 784: ! #line 3498 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; ;} break; case 785: ! #line 3500 "parse.y" ! { yyval.ttype = finish_case_label (NULL_TREE, NULL_TREE); ;} break; case 786: ! #line 3502 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; ;} break; case 787: ! #line 3504 "parse.y" ! { yyval.ttype = finish_break_stmt (); ;} break; case 788: ! #line 3506 "parse.y" ! { yyval.ttype = finish_continue_stmt (); ;} break; case 789: ! #line 3508 "parse.y" ! { yyval.ttype = finish_return_stmt (NULL_TREE); ;} break; case 790: ! #line 3510 "parse.y" ! { yyval.ttype = finish_return_stmt (yyvsp[-1].ttype); ;} break; case 791: ! #line 3512 "parse.y" { yyval.ttype = finish_asm_stmt (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE, NULL_TREE); ! ASM_INPUT_P (yyval.ttype) = 1; ;} break; case 792: ! #line 3517 "parse.y" ! { yyval.ttype = finish_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE); ;} break; case 793: ! #line 3521 "parse.y" ! { yyval.ttype = finish_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ;} break; case 794: ! #line 3523 "parse.y" ! { yyval.ttype = finish_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, NULL_TREE, yyvsp[-2].ttype, NULL_TREE); ;} break; case 795: ! #line 3527 "parse.y" ! { yyval.ttype = finish_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ;} break; case 796: ! #line 3530 "parse.y" ! { yyval.ttype = finish_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, NULL_TREE, yyvsp[-4].ttype, yyvsp[-2].ttype); ;} break; case 797: ! #line 3533 "parse.y" ! { yyval.ttype = finish_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, NULL_TREE, yyvsp[-2].ttype); ;} break; case 798: ! #line 3535 "parse.y" { if (pedantic) pedwarn ("ISO C++ forbids computed gotos"); yyval.ttype = finish_goto_stmt (yyvsp[-1].ttype); ! ;} break; case 799: ! #line 3541 "parse.y" ! { yyval.ttype = finish_goto_stmt (yyvsp[-1].ttype); ;} break; case 800: ! #line 3543 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 801: ! #line 3545 "parse.y" { error ("label must be followed by statement"); yyungetc ('}', 0); ! yyval.ttype = NULL_TREE; ;} break; case 802: ! #line 3549 "parse.y" { finish_stmt (); ! yyval.ttype = NULL_TREE; ;} break; case 803: ! #line 3552 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 804: ! #line 3554 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 805: ! #line 3556 "parse.y" { do_local_using_decl (yyvsp[0].ttype); ! yyval.ttype = NULL_TREE; ;} break; case 806: ! #line 3559 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 807: ! #line 3564 "parse.y" ! { yyval.ttype = begin_function_try_block (); ;} break; case 808: ! #line 3566 "parse.y" ! { finish_function_try_block (yyvsp[-1].ttype); ;} break; case 809: ! #line 3568 "parse.y" ! { finish_function_handler_sequence (yyvsp[-3].ttype); ;} break; case 810: ! #line 3573 "parse.y" ! { yyval.ttype = begin_try_block (); ;} break; case 811: ! #line 3575 "parse.y" ! { finish_try_block (yyvsp[-1].ttype); ;} break; case 812: ! #line 3577 "parse.y" ! { finish_handler_sequence (yyvsp[-3].ttype); ;} break; case 815: ! #line 3584 "parse.y" { /* Generate a fake handler block to avoid later aborts. */ tree fake_handler = begin_handler (); finish_handler_parms (NULL_TREE, fake_handler); *************** yyreduce: *** 9573,9730 **** yyval.ttype = fake_handler; error ("must have at least one catch per try block"); ! } break; case 816: ! #line 3456 "parse.y" ! { yyval.ttype = begin_handler (); } break; case 817: ! #line 3458 "parse.y" ! { finish_handler_parms (yyvsp[0].ttype, yyvsp[-1].ttype); } break; case 818: ! #line 3460 "parse.y" ! { finish_handler (yyvsp[-3].ttype); } break; case 821: ! #line 3470 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 822: ! #line 3473 "parse.y" { check_for_new_type ("inside exception declarations", yyvsp[-1].ftype); yyval.ttype = start_handler_parms (TREE_PURPOSE (yyvsp[-1].ftype.t), TREE_VALUE (yyvsp[-1].ftype.t)); ! } break; case 823: ! #line 3482 "parse.y" ! { finish_label_stmt (yyvsp[-1].ttype); } break; case 824: ! #line 3484 "parse.y" ! { finish_label_stmt (yyvsp[-1].ttype); } break; case 825: ! #line 3486 "parse.y" ! { finish_label_stmt (yyvsp[-1].ttype); } break; case 826: ! #line 3488 "parse.y" ! { finish_label_stmt (yyvsp[-1].ttype); } break; case 827: ! #line 3493 "parse.y" ! { finish_expr_stmt (yyvsp[-1].ttype); } break; case 829: ! #line 3496 "parse.y" { if (pedantic) pedwarn ("ISO C++ forbids compound statements inside for initializations"); ! } break; case 830: ! #line 3505 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 832: ! #line 3511 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 834: ! #line 3514 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 835: ! #line 3520 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 838: ! #line 3527 "parse.y" ! { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); } break; case 839: ! #line 3532 "parse.y" ! { yyval.ttype = build_tree_list (build_tree_list (NULL_TREE, yyvsp[-3].ttype), yyvsp[-1].ttype); } break; case 840: ! #line 3534 "parse.y" { yyvsp[-5].ttype = build_string (IDENTIFIER_LENGTH (yyvsp[-5].ttype), IDENTIFIER_POINTER (yyvsp[-5].ttype)); ! yyval.ttype = build_tree_list (build_tree_list (yyvsp[-5].ttype, yyvsp[-3].ttype), yyvsp[-1].ttype); } break; case 841: ! #line 3541 "parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);} break; case 842: ! #line 3543 "parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype); } break; case 843: ! #line 3550 "parse.y" { yyval.ttype = empty_parms(); ! } break; case 845: ! #line 3555 "parse.y" { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[0].ftype.t), 0); ! check_for_new_type ("inside parameter list", yyvsp[0].ftype); } break; case 846: ! #line 3562 "parse.y" ! { yyval.ttype = finish_parmlist (yyval.ttype, 0); } break; case 847: ! #line 3564 "parse.y" ! { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); } break; case 848: ! #line 3567 "parse.y" ! { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); } break; case 849: ! #line 3569 "parse.y" { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, ! yyvsp[-1].ftype.t), 1); } break; case 850: ! #line 3572 "parse.y" ! { yyval.ttype = finish_parmlist (NULL_TREE, 1); } break; case 851: ! #line 3574 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right --- 9627,9784 ---- yyval.ttype = fake_handler; error ("must have at least one catch per try block"); ! ;} break; case 816: ! #line 3596 "parse.y" ! { yyval.ttype = begin_handler (); ;} break; case 817: ! #line 3598 "parse.y" ! { finish_handler_parms (yyvsp[0].ttype, yyvsp[-1].ttype); ;} break; case 818: ! #line 3600 "parse.y" ! { finish_handler (yyvsp[-3].ttype); ;} break; case 821: ! #line 3610 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 822: ! #line 3626 "parse.y" { check_for_new_type ("inside exception declarations", yyvsp[-1].ftype); yyval.ttype = start_handler_parms (TREE_PURPOSE (yyvsp[-1].ftype.t), TREE_VALUE (yyvsp[-1].ftype.t)); ! ;} break; case 823: ! #line 3635 "parse.y" ! { finish_label_stmt (yyvsp[-1].ttype); ;} break; case 824: ! #line 3637 "parse.y" ! { finish_label_stmt (yyvsp[-1].ttype); ;} break; case 825: ! #line 3639 "parse.y" ! { finish_label_stmt (yyvsp[-1].ttype); ;} break; case 826: ! #line 3641 "parse.y" ! { finish_label_stmt (yyvsp[-1].ttype); ;} break; case 827: ! #line 3646 "parse.y" ! { finish_expr_stmt (yyvsp[-1].ttype); ;} break; case 829: ! #line 3649 "parse.y" { if (pedantic) pedwarn ("ISO C++ forbids compound statements inside for initializations"); ! ;} break; case 830: ! #line 3658 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 832: ! #line 3664 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 834: ! #line 3667 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 835: ! #line 3674 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 838: ! #line 3681 "parse.y" ! { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;} break; case 839: ! #line 3686 "parse.y" ! { yyval.ttype = build_tree_list (build_tree_list (NULL_TREE, yyvsp[-3].ttype), yyvsp[-1].ttype); ;} break; case 840: ! #line 3688 "parse.y" { yyvsp[-5].ttype = build_string (IDENTIFIER_LENGTH (yyvsp[-5].ttype), IDENTIFIER_POINTER (yyvsp[-5].ttype)); ! yyval.ttype = build_tree_list (build_tree_list (yyvsp[-5].ttype, yyvsp[-3].ttype), yyvsp[-1].ttype); ;} break; case 841: ! #line 3695 "parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);;} break; case 842: ! #line 3697 "parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype); ;} break; case 843: ! #line 3708 "parse.y" { yyval.ttype = empty_parms(); ! ;} break; case 845: ! #line 3713 "parse.y" { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[0].ftype.t), 0); ! check_for_new_type ("inside parameter list", yyvsp[0].ftype); ;} break; case 846: ! #line 3721 "parse.y" ! { yyval.ttype = finish_parmlist (yyval.ttype, 0); ;} break; case 847: ! #line 3723 "parse.y" ! { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ;} break; case 848: ! #line 3726 "parse.y" ! { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ;} break; case 849: ! #line 3728 "parse.y" { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, ! yyvsp[-1].ftype.t), 1); ;} break; case 850: ! #line 3731 "parse.y" ! { yyval.ttype = finish_parmlist (NULL_TREE, 1); ;} break; case 851: ! #line 3733 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right *************** yyreduce: *** 9733,9743 **** yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 0); yyungetc (':', 0); yychar = ')'; ! } break; case 852: ! #line 3584 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right --- 9787,9797 ---- yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 0); yyungetc (':', 0); yychar = ')'; ! ;} break; case 852: ! #line 3743 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right *************** yyreduce: *** 9747,9863 **** yyvsp[-1].ftype.t), 0); yyungetc (':', 0); yychar = ')'; ! } break; case 853: ! #line 3599 "parse.y" ! { maybe_snarf_defarg (); } break; case 854: ! #line 3601 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; } break; case 857: ! #line 3612 "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 858: ! #line 3615 "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 859: ! #line 3618 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[0].ftype); ! yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); } break; case 860: ! #line 3621 "parse.y" ! { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); } break; case 861: ! #line 3623 "parse.y" ! { yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); } break; case 863: ! #line 3629 "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 864: ! #line 3637 "parse.y" { yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ! yyval.ftype.t = build_tree_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); } break; case 865: ! #line 3640 "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 866: ! #line 3643 "parse.y" { yyval.ftype.t = build_tree_list (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), yyvsp[0].ttype); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; } break; case 867: ! #line 3647 "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 868: ! #line 3650 "parse.y" { yyval.ftype.t = build_tree_list (yyvsp[0].ftype.t, NULL_TREE); ! yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; } break; case 869: ! #line 3653 "parse.y" { yyval.ftype.t = build_tree_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); ! yyval.ftype.new_type_flag = 0; } break; case 870: ! #line 3659 "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 871: ! #line 3662 "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 874: ! #line 3673 "parse.y" ! { see_typename (); } break; case 875: ! #line 3678 "parse.y" { error ("type specifier omitted for parameter"); yyval.ttype = build_tree_list (integer_type_node, NULL_TREE); ! } break; case 876: ! #line 3683 "parse.y" { if (TREE_CODE (yyval.ttype) == SCOPE_REF) { --- 9801,9917 ---- yyvsp[-1].ftype.t), 0); yyungetc (':', 0); yychar = ')'; ! ;} break; case 853: ! #line 3758 "parse.y" ! { maybe_snarf_defarg (); ;} break; case 854: ! #line 3760 "parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 857: ! #line 3771 "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 858: ! #line 3774 "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 859: ! #line 3777 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[0].ftype); ! yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ;} break; case 860: ! #line 3780 "parse.y" ! { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;} break; case 861: ! #line 3782 "parse.y" ! { yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;} break; case 863: ! #line 3788 "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 864: ! #line 3798 "parse.y" { yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ! yyval.ftype.t = build_tree_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;} break; case 865: ! #line 3801 "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 866: ! #line 3804 "parse.y" { yyval.ftype.t = build_tree_list (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), yyvsp[0].ttype); ! yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;} break; case 867: ! #line 3808 "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 868: ! #line 3811 "parse.y" { yyval.ftype.t = build_tree_list (yyvsp[0].ftype.t, NULL_TREE); ! yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;} break; case 869: ! #line 3814 "parse.y" { yyval.ftype.t = build_tree_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); ! yyval.ftype.new_type_flag = 0; ;} break; case 870: ! #line 3820 "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 871: ! #line 3823 "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 874: ! #line 3834 "parse.y" ! { see_typename (); ;} break; case 875: ! #line 3839 "parse.y" { error ("type specifier omitted for parameter"); yyval.ttype = build_tree_list (integer_type_node, NULL_TREE); ! ;} break; case 876: ! #line 3844 "parse.y" { if (TREE_CODE (yyval.ttype) == SCOPE_REF) { *************** yyreduce: *** 9870,9958 **** else error ("type specifier omitted for parameter `%E'", yyval.ttype); yyval.ttype = build_tree_list (integer_type_node, yyval.ttype); ! } break; case 877: ! #line 3700 "parse.y" { error("'%D' is used as a type, but is not defined as a type.", yyvsp[-4].ttype); yyvsp[-2].ttype = error_mark_node; ! } break; case 878: ! #line 3708 "parse.y" ! { } break; case 880: ! #line 3714 "parse.y" ! { } break; case 882: ! #line 3720 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 883: ! #line 3722 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; } break; case 884: ! #line 3724 "parse.y" ! { yyval.ttype = empty_except_spec; } break; case 885: ! #line 3729 "parse.y" { check_for_new_type ("exception specifier", yyvsp[0].ftype); yyval.ttype = groktypename (yyvsp[0].ftype.t); ! } break; case 886: ! #line 3734 "parse.y" ! { yyval.ttype = error_mark_node; } break; case 887: ! #line 3739 "parse.y" ! { yyval.ttype = add_exception_specifier (NULL_TREE, yyvsp[0].ttype, 1); } break; case 888: ! #line 3741 "parse.y" ! { yyval.ttype = add_exception_specifier (yyvsp[-2].ttype, yyvsp[0].ttype, 1); } break; case 889: ! #line 3746 "parse.y" ! { yyval.ttype = NULL_TREE; } break; case 890: ! #line 3748 "parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 891: ! #line 3750 "parse.y" ! { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); } break; case 892: ! #line 3752 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_nt (SCOPE_REF, yyvsp[-2].ttype, arg); ! } break; case 893: ! #line 3759 "parse.y" { saved_scopes = tree_cons (got_scope, got_object, saved_scopes); TREE_LANG_FLAG_0 (saved_scopes) = looking_for_typename; --- 9924,10012 ---- else error ("type specifier omitted for parameter `%E'", yyval.ttype); yyval.ttype = build_tree_list (integer_type_node, yyval.ttype); ! ;} break; case 877: ! #line 3861 "parse.y" { error("'%D' is used as a type, but is not defined as a type.", yyvsp[-4].ttype); yyvsp[-2].ttype = error_mark_node; ! ;} break; case 878: ! #line 3869 "parse.y" ! { ;} break; case 880: ! #line 3875 "parse.y" ! { ;} break; case 882: ! #line 3881 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 883: ! #line 3883 "parse.y" ! { yyval.ttype = yyvsp[-1].ttype; ;} break; case 884: ! #line 3885 "parse.y" ! { yyval.ttype = empty_except_spec; ;} break; case 885: ! #line 3890 "parse.y" { check_for_new_type ("exception specifier", yyvsp[0].ftype); yyval.ttype = groktypename (yyvsp[0].ftype.t); ! ;} break; case 886: ! #line 3895 "parse.y" ! { yyval.ttype = error_mark_node; ;} break; case 887: ! #line 3900 "parse.y" ! { yyval.ttype = add_exception_specifier (NULL_TREE, yyvsp[0].ttype, 1); ;} break; case 888: ! #line 3902 "parse.y" ! { yyval.ttype = add_exception_specifier (yyvsp[-2].ttype, yyvsp[0].ttype, 1); ;} break; case 889: ! #line 3907 "parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 890: ! #line 3909 "parse.y" ! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 891: ! #line 3911 "parse.y" ! { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 892: ! #line 3913 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_nt (SCOPE_REF, yyvsp[-2].ttype, arg); ! ;} break; case 893: ! #line 3920 "parse.y" { saved_scopes = tree_cons (got_scope, got_object, saved_scopes); TREE_LANG_FLAG_0 (saved_scopes) = looking_for_typename; *************** yyreduce: *** 9961,10181 **** looking_for_typename = 1; got_object = got_scope; got_scope = NULL_TREE; ! } break; case 894: ! #line 3771 "parse.y" { got_scope = TREE_PURPOSE (saved_scopes); got_object = TREE_VALUE (saved_scopes); looking_for_typename = TREE_LANG_FLAG_0 (saved_scopes); saved_scopes = TREE_CHAIN (saved_scopes); yyval.ttype = got_scope; ! } break; case 895: ! #line 3781 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (MULT_EXPR)); } break; case 896: ! #line 3783 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (TRUNC_DIV_EXPR)); } break; case 897: ! #line 3785 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (TRUNC_MOD_EXPR)); } break; case 898: ! #line 3787 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (PLUS_EXPR)); } break; case 899: ! #line 3789 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (MINUS_EXPR)); } break; case 900: ! #line 3791 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (BIT_AND_EXPR)); } break; case 901: ! #line 3793 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (BIT_IOR_EXPR)); } break; case 902: ! #line 3795 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (BIT_XOR_EXPR)); } break; case 903: ! #line 3797 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (BIT_NOT_EXPR)); } break; case 904: ! #line 3799 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (COMPOUND_EXPR)); } break; case 905: ! #line 3801 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (yyvsp[-1].code)); } break; case 906: ! #line 3803 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (LT_EXPR)); } break; case 907: ! #line 3805 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (GT_EXPR)); } break; case 908: ! #line 3807 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (yyvsp[-1].code)); } break; case 909: ! #line 3809 "parse.y" ! { yyval.ttype = frob_opname (ansi_assopname (yyvsp[-1].code)); } break; case 910: ! #line 3811 "parse.y" ! { yyval.ttype = frob_opname (ansi_assopname (NOP_EXPR)); } break; case 911: ! #line 3813 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (yyvsp[-1].code)); } break; case 912: ! #line 3815 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (yyvsp[-1].code)); } break; case 913: ! #line 3817 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (POSTINCREMENT_EXPR)); } break; case 914: ! #line 3819 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (PREDECREMENT_EXPR)); } break; case 915: ! #line 3821 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (TRUTH_ANDIF_EXPR)); } break; case 916: ! #line 3823 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (TRUTH_ORIF_EXPR)); } break; case 917: ! #line 3825 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (TRUTH_NOT_EXPR)); } break; case 918: ! #line 3827 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (COND_EXPR)); } break; case 919: ! #line 3829 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (yyvsp[-1].code)); } break; case 920: ! #line 3831 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (COMPONENT_REF)); } break; case 921: ! #line 3833 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (MEMBER_REF)); } break; case 922: ! #line 3835 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (CALL_EXPR)); } break; case 923: ! #line 3837 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (ARRAY_REF)); } break; case 924: ! #line 3839 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (NEW_EXPR)); } break; case 925: ! #line 3841 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (DELETE_EXPR)); } break; case 926: ! #line 3843 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (VEC_NEW_EXPR)); } break; case 927: ! #line 3845 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (VEC_DELETE_EXPR)); } break; case 928: ! #line 3847 "parse.y" ! { yyval.ttype = frob_opname (grokoptypename (yyvsp[-2].ftype.t, yyvsp[-1].ttype, yyvsp[0].ttype)); } break; case 929: ! #line 3849 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (ERROR_MARK)); } break; case 930: ! #line 3854 "parse.y" { if (yychar == YYEMPTY) yychar = YYLEX; ! yyval.itype = lineno; } break; } ! /* Line 1016 of /usr/share/bison/yacc.c. */ ! #line 10164 "p13706.c" yyvsp -= yylen; yyssp -= yylen; ! #if YYDEBUG ! if (yydebug) ! { ! short *yyssp1 = yyss - 1; ! YYFPRINTF (stderr, "state stack now"); ! while (yyssp1 != yyssp) ! YYFPRINTF (stderr, " %d", *++yyssp1); ! YYFPRINTF (stderr, "\n"); ! } ! #endif *++yyvsp = yyval; --- 10015,10226 ---- looking_for_typename = 1; got_object = got_scope; got_scope = NULL_TREE; ! ;} break; case 894: ! #line 3932 "parse.y" { got_scope = TREE_PURPOSE (saved_scopes); got_object = TREE_VALUE (saved_scopes); looking_for_typename = TREE_LANG_FLAG_0 (saved_scopes); saved_scopes = TREE_CHAIN (saved_scopes); yyval.ttype = got_scope; ! ;} break; case 895: ! #line 3942 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (MULT_EXPR)); ;} break; case 896: ! #line 3944 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (TRUNC_DIV_EXPR)); ;} break; case 897: ! #line 3946 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (TRUNC_MOD_EXPR)); ;} break; case 898: ! #line 3948 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (PLUS_EXPR)); ;} break; case 899: ! #line 3950 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (MINUS_EXPR)); ;} break; case 900: ! #line 3952 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (BIT_AND_EXPR)); ;} break; case 901: ! #line 3954 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (BIT_IOR_EXPR)); ;} break; case 902: ! #line 3956 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (BIT_XOR_EXPR)); ;} break; case 903: ! #line 3958 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (BIT_NOT_EXPR)); ;} break; case 904: ! #line 3960 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (COMPOUND_EXPR)); ;} break; case 905: ! #line 3962 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (yyvsp[-1].code)); ;} break; case 906: ! #line 3964 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (LT_EXPR)); ;} break; case 907: ! #line 3966 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (GT_EXPR)); ;} break; case 908: ! #line 3968 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (yyvsp[-1].code)); ;} break; case 909: ! #line 3970 "parse.y" ! { yyval.ttype = frob_opname (ansi_assopname (yyvsp[-1].code)); ;} break; case 910: ! #line 3972 "parse.y" ! { yyval.ttype = frob_opname (ansi_assopname (NOP_EXPR)); ;} break; case 911: ! #line 3974 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (yyvsp[-1].code)); ;} break; case 912: ! #line 3976 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (yyvsp[-1].code)); ;} break; case 913: ! #line 3978 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (POSTINCREMENT_EXPR)); ;} break; case 914: ! #line 3980 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (PREDECREMENT_EXPR)); ;} break; case 915: ! #line 3982 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (TRUTH_ANDIF_EXPR)); ;} break; case 916: ! #line 3984 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (TRUTH_ORIF_EXPR)); ;} break; case 917: ! #line 3986 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (TRUTH_NOT_EXPR)); ;} break; case 918: ! #line 3988 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (COND_EXPR)); ;} break; case 919: ! #line 3990 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (yyvsp[-1].code)); ;} break; case 920: ! #line 3992 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (COMPONENT_REF)); ;} break; case 921: ! #line 3994 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (MEMBER_REF)); ;} break; case 922: ! #line 3996 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (CALL_EXPR)); ;} break; case 923: ! #line 3998 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (ARRAY_REF)); ;} break; case 924: ! #line 4000 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (NEW_EXPR)); ;} break; case 925: ! #line 4002 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (DELETE_EXPR)); ;} break; case 926: ! #line 4004 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (VEC_NEW_EXPR)); ;} break; case 927: ! #line 4006 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (VEC_DELETE_EXPR)); ;} break; case 928: ! #line 4008 "parse.y" ! { yyval.ttype = frob_opname (grokoptypename (yyvsp[-2].ftype.t, yyvsp[-1].ttype, yyvsp[0].ttype)); ;} break; case 929: ! #line 4010 "parse.y" ! { yyval.ttype = frob_opname (ansi_opname (ERROR_MARK)); ;} break; case 930: ! #line 4017 "parse.y" { if (yychar == YYEMPTY) yychar = YYLEX; ! yyval.itype = lineno; ;} break; } ! /* Line 991 of yacc.c. */ ! #line 10217 "p19357.c" yyvsp -= yylen; yyssp -= yylen; ! YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; *************** yyerrlab: *** 10220,10231 **** yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) yysize += yystrlen (yytname[yyx]) + 15, yycount++; ! yysize += yystrlen ("parse error, unexpected ") + 1; yysize += yystrlen (yytname[yytype]); yymsg = (char *) YYSTACK_ALLOC (yysize); if (yymsg != 0) { ! char *yyp = yystpcpy (yymsg, "parse error, unexpected "); yyp = yystpcpy (yyp, yytname[yytype]); if (yycount < 5) --- 10265,10276 ---- yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) yysize += yystrlen (yytname[yyx]) + 15, yycount++; ! yysize += yystrlen ("syntax error, unexpected ") + 1; yysize += yystrlen (yytname[yytype]); yymsg = (char *) YYSTACK_ALLOC (yysize); if (yymsg != 0) { ! char *yyp = yystpcpy (yymsg, "syntax error, unexpected "); yyp = yystpcpy (yyp, yytname[yytype]); if (yycount < 5) *************** yyerrlab: *** 10246,10264 **** YYSTACK_FREE (yymsg); } else ! yyerror ("parse error; also virtual memory exhausted"); } else #endif /* YYERROR_VERBOSE */ ! yyerror ("parse error"); } - goto yyerrlab1; ! /*----------------------------------------------------. ! | yyerrlab1 -- error raised explicitly by an action. | ! `----------------------------------------------------*/ ! yyerrlab1: if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an --- 10291,10305 ---- YYSTACK_FREE (yymsg); } else ! yyerror ("syntax error; also virtual memory exhausted"); } else #endif /* YYERROR_VERBOSE */ ! yyerror ("syntax error"); } ! if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an *************** yyerrlab1: *** 10270,10297 **** /* Pop the error token. */ YYPOPSTACK; /* Pop the rest of the stack. */ ! while (yyssp > yyss) { ! YYDPRINTF ((stderr, "Error: popping ")); ! YYDSYMPRINT ((stderr, ! yystos[*yyssp], ! *yyvsp)); ! YYDPRINTF ((stderr, "\n")); ! yydestruct (yystos[*yyssp], *yyvsp); YYPOPSTACK; } YYABORT; } ! YYDPRINTF ((stderr, "Discarding token %d (%s).\n", ! yychar, yytname[yychar1])); ! yydestruct (yychar1, yylval); yychar = YYEMPTY; } /* Else will try to reuse lookahead token after shifting the error token. */ yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) --- 10311,10356 ---- /* Pop the error token. */ YYPOPSTACK; /* Pop the rest of the stack. */ ! while (yyss < yyssp) { ! YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); ! yydestruct (yystos[*yyssp], yyvsp); YYPOPSTACK; } YYABORT; } ! YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc); ! yydestruct (yytoken, &yylval); yychar = YYEMPTY; + } /* Else will try to reuse lookahead token after shifting the error token. */ + goto yyerrlab2; + + /*----------------------------------------------------. + | yyerrlab1 -- error raised explicitly by an action. | + `----------------------------------------------------*/ + yyerrlab1: + + /* Suppress GCC warning that yyerrlab1 is unused when no action + invokes YYERROR. */ + #if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__) \ + && !defined __cplusplus + __attribute__ ((__unused__)) + #endif + + + goto yyerrlab2; + + + /*---------------------------------------------------------------. + | yyerrlab2 -- pop states until the error token can be shifted. | + `---------------------------------------------------------------*/ + yyerrlab2: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) *************** yyerrlab1: *** 10312,10337 **** if (yyssp == yyss) YYABORT; ! YYDPRINTF ((stderr, "Error: popping ")); ! YYDSYMPRINT ((stderr, ! yystos[*yyssp], *yyvsp)); ! YYDPRINTF ((stderr, "\n")); ! ! yydestruct (yystos[yystate], *yyvsp); yyvsp--; yystate = *--yyssp; ! ! #if YYDEBUG ! if (yydebug) ! { ! short *yyssp1 = yyss - 1; ! YYFPRINTF (stderr, "Error: state stack now"); ! while (yyssp1 != yyssp) ! YYFPRINTF (stderr, " %d", *++yyssp1); ! YYFPRINTF (stderr, "\n"); ! } ! #endif } if (yyn == YYFINAL) --- 10371,10382 ---- if (yyssp == yyss) YYABORT; ! YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); ! yydestruct (yystos[yystate], yyvsp); yyvsp--; yystate = *--yyssp; ! YY_STACK_PRINT (yyss, yyssp); } if (yyn == YYFINAL) *************** yyreturn: *** 10379,10385 **** } ! #line 3858 "parse.y" #ifdef SPEW_DEBUG --- 10424,10430 ---- } ! #line 4021 "parse.y" #ifdef SPEW_DEBUG diff -Nrcpad gcc-3.3.5/gcc/cp/parse.h gcc-3.3.6/gcc/cp/parse.h *** gcc-3.3.5/gcc/cp/parse.h 2004-09-30 17:42:36.000000000 +0000 --- gcc-3.3.6/gcc/cp/parse.h 2005-05-03 12:47:06.000000000 +0000 *************** *** 1,4 **** ! /* A Bison parser, made from parse.y, by GNU bison 1.75. */ /* Skeleton parser for Yacc-like parsing with Bison, Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc. --- 1,4 ---- ! /* A Bison parser, made by GNU Bison 1.875. */ /* Skeleton parser for Yacc-like parsing with Bison, Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc. *************** *** 23,31 **** This special exception was added by the Free Software Foundation in version 1.24 of Bison. */ - #ifndef BISON_P______H - # define BISON_P______H - /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE --- 23,28 ---- *************** *** 212,235 **** ! #ifndef YYSTYPE ! #line 249 "parse.y" ! typedef union { GTY(()) long itype; tree ttype; char *strtype; enum tree_code code; flagged_type_tree ftype; struct unparsed_text *pi; ! } yystype; ! /* Line 1281 of /usr/share/bison/yacc.c. */ ! #line 227 "p13706.h" ! # define YYSTYPE yystype #endif extern YYSTYPE yylval; - #endif /* not BISON_P______H */ ! #define YYEMPTY -2 --- 209,233 ---- ! #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) ! #line 271 "parse.y" ! typedef union YYSTYPE { GTY(()) long itype; tree ttype; char *strtype; enum tree_code code; flagged_type_tree ftype; struct unparsed_text *pi; ! } YYSTYPE; ! /* Line 1249 of yacc.c. */ ! #line 223 "p19357.h" ! # define yystype YYSTYPE /* obsolescent; will be withdrawn */ ! # define YYSTYPE_IS_DECLARED 1 ! # define YYSTYPE_IS_TRIVIAL 1 #endif extern YYSTYPE yylval; ! #define YYEMPTY (-2) diff -Nrcpad gcc-3.3.5/libstdc++-v3/acinclude.m4 gcc-3.3.6/libstdc++-v3/acinclude.m4 *** gcc-3.3.5/libstdc++-v3/acinclude.m4 2004-05-25 06:03:52.000000000 +0000 --- gcc-3.3.6/libstdc++-v3/acinclude.m4 2005-05-03 09:49:42.000000000 +0000 *************** dnl 2) has "C" linkage *** 542,548 **** dnl dnl argument 1 is name of function to check dnl ! dnl ASSUMES argument is a math function with TWO parameters dnl dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2 AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2, [ --- 542,548 ---- dnl dnl argument 1 is name of function to check dnl ! dnl ASSUMES argument is a stdlib function with TWO parameters dnl dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2 AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2, [ *************** dnl 2) has "C" linkage *** 571,577 **** dnl dnl argument 1 is name of function to check dnl ! dnl ASSUMES argument is a function with THREE parameters dnl dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3 AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3, [ --- 571,577 ---- dnl dnl argument 1 is name of function to check dnl ! dnl ASSUMES argument is a stdlib function with THREE parameters dnl dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3 AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3, [ *************** dnl 2) has "C" linkage *** 599,605 **** dnl dnl argument 1 is name of function to check dnl ! dnl ASSUMES argument is a function with ONE parameter dnl dnl GLIBCPP_CHECK_UNISTD_DECL_AND_LINKAGE_1 AC_DEFUN(GLIBCPP_CHECK_UNISTD_DECL_AND_LINKAGE_1, [ --- 599,605 ---- dnl dnl argument 1 is name of function to check dnl ! dnl ASSUMES argument is a unistd function with ONE parameter dnl dnl GLIBCPP_CHECK_UNISTD_DECL_AND_LINKAGE_1 AC_DEFUN(GLIBCPP_CHECK_UNISTD_DECL_AND_LINKAGE_1, [ diff -Nrcpad gcc-3.3.5/libstdc++-v3/ChangeLog gcc-3.3.6/libstdc++-v3/ChangeLog *** gcc-3.3.5/libstdc++-v3/ChangeLog 2004-09-30 16:47:23.000000000 +0000 --- gcc-3.3.6/libstdc++-v3/ChangeLog 2005-05-03 10:55:23.000000000 +0000 *************** *** 1,3 **** --- 1,44 ---- + 2005-05-03 Release Manager + + * GCC 3.3.6 Released. + + 2005-05-03 Jones Desougi + + PR libstdc++/21131 + * acinclude.m4: Fix comments. + + 2005-02-18 Eric Botcazou + + * testsuite/thread/pthread1.cc: Do not invoke pthread_setconcurrency + on Solaris 2.6 and below. + * testsuite/thread/pthread2.cc: Likewise. + * testsuite/thread/pthread3.cc: Likewise. + * testsuite/thread/pthread4.cc: Likewise. + * testsuite/thread/pthread5.cc: Likewise. + * testsuite/thread/pthread6.cc: Likewise. + + 2005-02-02 Zack Weinberg + + Backport from mainline: + Paolo Carlini + * include/bits/istream.tcc (readsome): + Tidy, closely following 27.6.1.3, p30. + + 2005-01-22 Volker Reichelt + + PR libstdc++/19510 + * include/bits/stl_list.h (_List_iterator_base): Initialize _M_node + in constructor. + (_List_iterator): Initialize _List_iterator_base in constructor. + * include/bits/stl_tree.h (_Rb_tree_iterator): Initialize _M_node + in constructor. + + 2004-12-03 Richard Henderson + + PR 17856 + * config/cpu/i486/atomicity.h (__exchange_and_add, __atomic_add): + Split in-out memory constraints. + 2004-09-30 Release Manager * GCC 3.3.5 Released. *************** *** 12,18 **** * configure.in (libtool_VERSION): To 5:7:0. * configure: Regenerate. * testsuite/abi_check.cc (check_version): Add CXXABI_1.2.2. ! 2004-07-25 Kaz Kojima PR bootstrap/15120 --- 53,59 ---- * configure.in (libtool_VERSION): To 5:7:0. * configure: Regenerate. * testsuite/abi_check.cc (check_version): Add CXXABI_1.2.2. ! 2004-07-25 Kaz Kojima PR bootstrap/15120 *************** *** 20,26 **** 2004-07-08 Ulrich Weigand ! * testsuite/22_locale/time_put_members_char.cc (test01): Allow either "Son" or "So" as abbreviated name for Sunday in de_DE locale. * testsuite/22_locale/time_put_members_wchar_t.cc (test01): Likewise. --- 61,67 ---- 2004-07-08 Ulrich Weigand ! * testsuite/22_locale/time_put_members_char.cc (test01): Allow either "Son" or "So" as abbreviated name for Sunday in de_DE locale. * testsuite/22_locale/time_put_members_wchar_t.cc (test01): Likewise. *************** *** 41,54 **** * aclocal.m4: Regenerate. * configure.in: Set os_include_dir correctly when --with-newlib. * configure: Regenerate. ! 2004-05-13 Benjamin Kosnik PR libstdc++/14720 * config/linker-map.gnu: Export basic_ios::_M_setstate. * testsuite/abi_check.cc (check_version): Add GLIBCXX_3.2.4 to known versions. ! * configure.in (libtool_VERSION): To 5:6:0. * configure: Regenerated. 2004-05-07 Matthias Klose --- 82,95 ---- * aclocal.m4: Regenerate. * configure.in: Set os_include_dir correctly when --with-newlib. * configure: Regenerate. ! 2004-05-13 Benjamin Kosnik PR libstdc++/14720 * config/linker-map.gnu: Export basic_ios::_M_setstate. * testsuite/abi_check.cc (check_version): Add GLIBCXX_3.2.4 to known versions. ! * configure.in (libtool_VERSION): To 5:6:0. * configure: Regenerated. 2004-05-07 Matthias Klose diff -Nrcpad gcc-3.3.5/libstdc++-v3/config/cpu/i486/atomicity.h gcc-3.3.6/libstdc++-v3/config/cpu/i486/atomicity.h *** gcc-3.3.5/libstdc++-v3/config/cpu/i486/atomicity.h 2003-06-02 18:48:52.000000000 +0000 --- gcc-3.3.6/libstdc++-v3/config/cpu/i486/atomicity.h 2004-12-03 23:44:07.000000000 +0000 *************** *** 1,6 **** // Low-level functions for atomic operations: x86, x >= 4 version -*- C++ -*- ! // Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the --- 1,6 ---- // Low-level functions for atomic operations: x86, x >= 4 version -*- C++ -*- ! // Copyright (C) 1999, 2000, 2001, 2004 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the *************** __exchange_and_add (volatile _Atomic_wor *** 38,45 **** { register _Atomic_word __result; __asm__ __volatile__ ("lock; xadd{l} {%0,%1|%1,%0}" ! : "=r" (__result), "+m" (*__mem) ! : "0" (__val) : "memory"); return __result; } --- 38,45 ---- { register _Atomic_word __result; __asm__ __volatile__ ("lock; xadd{l} {%0,%1|%1,%0}" ! : "=r" (__result), "=m" (*__mem) ! : "0" (__val), "m"(*__mem) : "memory"); return __result; } *************** __attribute__ ((__unused__)) *** 49,55 **** __atomic_add (volatile _Atomic_word* __mem, int __val) { __asm__ __volatile__ ("lock; add{l} {%1,%0|%0,%1}" ! : "+m" (*__mem) : "ir" (__val) : "memory"); } #endif /* atomicity.h */ --- 49,57 ---- __atomic_add (volatile _Atomic_word* __mem, int __val) { __asm__ __volatile__ ("lock; add{l} {%1,%0|%0,%1}" ! : "=m" (*__mem) ! : "ir" (__val), "m"(*__mem) ! : "memory"); } #endif /* atomicity.h */ diff -Nrcpad gcc-3.3.5/libstdc++-v3/include/bits/c++config gcc-3.3.6/libstdc++-v3/include/bits/c++config *** gcc-3.3.5/libstdc++-v3/include/bits/c++config 2004-09-30 00:16:09.000000000 +0000 --- gcc-3.3.6/libstdc++-v3/include/bits/c++config 2005-05-03 00:17:08.000000000 +0000 *************** *** 35,41 **** #include // The current version of the C++ library in compressed ISO date format. ! #define __GLIBCPP__ 20040930 // This is necessary until GCC supports separate template compilation. #define _GLIBCPP_NO_TEMPLATE_EXPORT 1 --- 35,41 ---- #include // The current version of the C++ library in compressed ISO date format. ! #define __GLIBCPP__ 20050503 // This is necessary until GCC supports separate template compilation. #define _GLIBCPP_NO_TEMPLATE_EXPORT 1 diff -Nrcpad gcc-3.3.5/libstdc++-v3/include/bits/istream.tcc gcc-3.3.6/libstdc++-v3/include/bits/istream.tcc *** gcc-3.3.5/libstdc++-v3/include/bits/istream.tcc 2003-12-04 03:09:43.000000000 +0000 --- gcc-3.3.6/libstdc++-v3/include/bits/istream.tcc 2005-02-02 21:59:02.000000000 +0000 *************** namespace std *** 733,746 **** try { // Cannot compare int_type with streamsize generically. ! streamsize __num = this->rdbuf()->in_avail(); ! if (__num >= 0) ! { ! __num = min(__num, __n); ! if (__num) ! _M_gcount = this->rdbuf()->sgetn(__s, __num); ! } ! else __err |= ios_base::eofbit; } catch(...) --- 733,742 ---- try { // Cannot compare int_type with streamsize generically. ! const streamsize __num = this->rdbuf()->in_avail(); ! if (__num > 0) ! _M_gcount = this->rdbuf()->sgetn(__s, min(__num, __n)); ! else if (__num == -1) __err |= ios_base::eofbit; } catch(...) diff -Nrcpad gcc-3.3.5/libstdc++-v3/include/bits/stl_list.h gcc-3.3.6/libstdc++-v3/include/bits/stl_list.h *** gcc-3.3.5/libstdc++-v3/include/bits/stl_list.h 2002-09-10 23:19:10.000000000 +0000 --- gcc-3.3.6/libstdc++-v3/include/bits/stl_list.h 2005-01-21 23:52:48.000000000 +0000 *************** *** 1,6 **** // List implementation -*- C++ -*- ! // Copyright (C) 2001, 2002 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the --- 1,6 ---- // List implementation -*- C++ -*- ! // Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the *************** namespace std *** 108,113 **** --- 108,114 ---- { } _List_iterator_base() + : _M_node() { } /// Walk the %list forward. *************** namespace std *** 156,161 **** --- 157,163 ---- { } _List_iterator() + : _List_iterator_base() { } _List_iterator(const iterator& __x) diff -Nrcpad gcc-3.3.5/libstdc++-v3/include/bits/stl_tree.h gcc-3.3.6/libstdc++-v3/include/bits/stl_tree.h *** gcc-3.3.5/libstdc++-v3/include/bits/stl_tree.h 2002-11-22 18:53:53.000000000 +0000 --- gcc-3.3.6/libstdc++-v3/include/bits/stl_tree.h 2005-01-21 23:52:49.000000000 +0000 *************** *** 1,6 **** // RB tree implementation -*- C++ -*- ! // Copyright (C) 2001, 2002 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the --- 1,6 ---- // RB tree implementation -*- C++ -*- ! // Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the *************** namespace std *** 191,197 **** typedef _Rb_tree_iterator<_Val, _Ref, _Ptr> _Self; typedef _Rb_tree_node<_Val>* _Link_type; ! _Rb_tree_iterator() {} _Rb_tree_iterator(_Link_type __x) { _M_node = __x; } _Rb_tree_iterator(const iterator& __it) { _M_node = __it._M_node; } --- 191,197 ---- typedef _Rb_tree_iterator<_Val, _Ref, _Ptr> _Self; typedef _Rb_tree_node<_Val>* _Link_type; ! _Rb_tree_iterator() { _M_node = 0; } _Rb_tree_iterator(_Link_type __x) { _M_node = __x; } _Rb_tree_iterator(const iterator& __it) { _M_node = __it._M_node; } diff -Nrcpad gcc-3.3.5/libstdc++-v3/libio/ChangeLog gcc-3.3.6/libstdc++-v3/libio/ChangeLog *** gcc-3.3.5/libstdc++-v3/libio/ChangeLog 2004-09-30 16:47:17.000000000 +0000 --- gcc-3.3.6/libstdc++-v3/libio/ChangeLog 2005-05-03 10:55:16.000000000 +0000 *************** *** 1,3 **** --- 1,7 ---- + 2005-05-03 Release Manager + + * GCC 3.3.6 Released. + 2004-09-30 Release Manager * GCC 3.3.5 Released. diff -Nrcpad gcc-3.3.5/libstdc++-v3/testsuite/thread/pthread1.cc gcc-3.3.6/libstdc++-v3/testsuite/thread/pthread1.cc *** gcc-3.3.5/libstdc++-v3/testsuite/thread/pthread1.cc 2003-04-15 20:37:21.000000000 +0000 --- gcc-3.3.6/libstdc++-v3/testsuite/thread/pthread1.cc 2005-02-18 11:56:16.000000000 +0000 *************** main (int argc, char** argv) *** 107,113 **** task_queue* tq[thread_pairs]; ! #if defined(__sun) && defined(__svr4__) pthread_setconcurrency (thread_pairs * 2); #endif --- 107,113 ---- task_queue* tq[thread_pairs]; ! #if defined(__sun) && defined(__svr4__) && _XOPEN_VERSION >= 500 pthread_setconcurrency (thread_pairs * 2); #endif diff -Nrcpad gcc-3.3.5/libstdc++-v3/testsuite/thread/pthread2.cc gcc-3.3.6/libstdc++-v3/testsuite/thread/pthread2.cc *** gcc-3.3.5/libstdc++-v3/testsuite/thread/pthread2.cc 2003-04-15 20:37:21.000000000 +0000 --- gcc-3.3.6/libstdc++-v3/testsuite/thread/pthread2.cc 2005-02-18 11:56:16.000000000 +0000 *************** main() *** 50,56 **** { pthread_t tid[max_thread_count]; ! #if defined(__sun) && defined(__svr4__) pthread_setconcurrency (max_thread_count); #endif --- 50,56 ---- { pthread_t tid[max_thread_count]; ! #if defined(__sun) && defined(__svr4__) && _XOPEN_VERSION >= 500 pthread_setconcurrency (max_thread_count); #endif diff -Nrcpad gcc-3.3.5/libstdc++-v3/testsuite/thread/pthread3.cc gcc-3.3.6/libstdc++-v3/testsuite/thread/pthread3.cc *** gcc-3.3.5/libstdc++-v3/testsuite/thread/pthread3.cc 2003-04-15 20:37:21.000000000 +0000 --- gcc-3.3.6/libstdc++-v3/testsuite/thread/pthread3.cc 2005-02-18 11:56:16.000000000 +0000 *************** main() *** 47,53 **** { pthread_t tid[max_thread_count]; ! #if defined(__sun) && defined(__svr4__) pthread_setconcurrency (max_thread_count); #endif --- 47,53 ---- { pthread_t tid[max_thread_count]; ! #if defined(__sun) && defined(__svr4__) && _XOPEN_VERSION >= 500 pthread_setconcurrency (max_thread_count); #endif diff -Nrcpad gcc-3.3.5/libstdc++-v3/testsuite/thread/pthread4.cc gcc-3.3.6/libstdc++-v3/testsuite/thread/pthread4.cc *** gcc-3.3.5/libstdc++-v3/testsuite/thread/pthread4.cc 2003-07-16 01:18:19.000000000 +0000 --- gcc-3.3.6/libstdc++-v3/testsuite/thread/pthread4.cc 2005-02-18 11:56:16.000000000 +0000 *************** consume (void*) *** 93,99 **** int main (void) { ! #if defined(__sun) && defined(__svr4__) pthread_setconcurrency (2); #endif --- 93,99 ---- int main (void) { ! #if defined(__sun) && defined(__svr4__) && _XOPEN_VERSION >= 500 pthread_setconcurrency (2); #endif diff -Nrcpad gcc-3.3.5/libstdc++-v3/testsuite/thread/pthread5.cc gcc-3.3.6/libstdc++-v3/testsuite/thread/pthread5.cc *** gcc-3.3.5/libstdc++-v3/testsuite/thread/pthread5.cc 2003-04-15 20:37:21.000000000 +0000 --- gcc-3.3.6/libstdc++-v3/testsuite/thread/pthread5.cc 2005-02-18 11:56:16.000000000 +0000 *************** main (int argc, char *argv[]) *** 95,101 **** int ids[NTHREADS]; void* status; ! #if defined(__sun) && defined(__svr4__) pthread_setconcurrency (NTHREADS); #endif --- 95,101 ---- int ids[NTHREADS]; void* status; ! #if defined(__sun) && defined(__svr4__) && _XOPEN_VERSION >= 500 pthread_setconcurrency (NTHREADS); #endif diff -Nrcpad gcc-3.3.5/libstdc++-v3/testsuite/thread/pthread6.cc gcc-3.3.6/libstdc++-v3/testsuite/thread/pthread6.cc *** gcc-3.3.5/libstdc++-v3/testsuite/thread/pthread6.cc 2003-04-15 20:37:21.000000000 +0000 --- gcc-3.3.6/libstdc++-v3/testsuite/thread/pthread6.cc 2005-02-18 11:56:16.000000000 +0000 *************** main (void) *** 77,83 **** { pthread_t tid[max_thread_count]; ! #if defined(__sun) && defined(__svr4__) pthread_setconcurrency (max_thread_count); #endif --- 77,83 ---- { pthread_t tid[max_thread_count]; ! #if defined(__sun) && defined(__svr4__) && _XOPEN_VERSION >= 500 pthread_setconcurrency (max_thread_count); #endif