aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorJason Merrill <jason@gcc.gnu.org>1998-07-23 15:11:48 -0400
committerJason Merrill <jason@gcc.gnu.org>1998-07-23 15:11:48 -0400
commit25eb19ff0a02a74e3456d8e66e6eb09279303a96 (patch)
tree3b2494b60d39021ab9864336047b4e944cb916e3 /gcc/cp
parentca2b325127fdbacb4c2073e26a5191af17f126e4 (diff)
downloadgcc-25eb19ff0a02a74e3456d8e66e6eb09279303a96.zip
gcc-25eb19ff0a02a74e3456d8e66e6eb09279303a96.tar.gz
gcc-25eb19ff0a02a74e3456d8e66e6eb09279303a96.tar.bz2
except.c (process_start_catch_block_old): Call start_decl_1 for catch parm.
* except.c (process_start_catch_block_old): Call start_decl_1 for catch parm. * decl.c (start_decl_1): Avoid duplicate error. * init.c (expand_default_init): Only perform the initialization if it will do something. * parse.y (base_class): Check for invalid base class. From-SVN: r21353
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog13
-rw-r--r--gcc/cp/decl.c4
-rw-r--r--gcc/cp/except.c4
-rw-r--r--gcc/cp/init.c3
-rw-r--r--gcc/cp/parse.c698
-rw-r--r--gcc/cp/parse.y18
6 files changed, 392 insertions, 348 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index e26305e..c580d55 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,18 @@
1998-07-23 Jason Merrill <jason@yorick.cygnus.com>
+ * except.c (process_start_catch_block_old): Call start_decl_1 for
+ catch parm.
+ * decl.c (start_decl_1): Avoid duplicate error.
+
+ * init.c (expand_default_init): Only perform the initialization if
+ it will do something.
+
+1998-07-23 H.J. Lu (hjl@gnu.org)
+
+ * parse.y (base_class): Check for invalid base class.
+
+1998-07-23 Jason Merrill <jason@yorick.cygnus.com>
+
* decl2.c (import_export_template): Fold in...
(import_export_class): ...to here. Handle dllimport/export.
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 51835de..87c2fd0 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -6617,6 +6617,7 @@ start_decl_1 (decl)
cp_error ("variable `%#D' has initializer but incomplete type",
decl);
initialized = 0;
+ type = TREE_TYPE (decl) = error_mark_node;
}
else if (TYPE_SIZE (complete_type (TREE_TYPE (type))) == NULL_TREE)
{
@@ -6639,8 +6640,7 @@ start_decl_1 (decl)
decl);
/* Change the type so that assemble_variable will give
DECL an rtl we can live with: (mem (const_int 0)). */
- TREE_TYPE (decl) = error_mark_node;
- type = error_mark_node;
+ type = TREE_TYPE (decl) = error_mark_node;
}
else
{
diff --git a/gcc/cp/except.c b/gcc/cp/except.c
index bc5379a..0c26086 100644
--- a/gcc/cp/except.c
+++ b/gcc/cp/except.c
@@ -699,7 +699,9 @@ process_start_catch_block_old (declspecs, declarator)
DECL_INITIAL (decl) = init;
decl = pushdecl (decl);
- cp_finish_decl (decl, init, NULL_TREE, 0, LOOKUP_ONLYCONVERTING);
+ start_decl_1 (decl);
+ cp_finish_decl (decl, DECL_INITIAL (decl),
+ NULL_TREE, 0, LOOKUP_ONLYCONVERTING);
}
else
{
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index dfe07b5..931d033 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -1200,7 +1200,8 @@ expand_default_init (binfo, true_exp, exp, init, alias_this, flags)
rval = build_method_call (exp, ctor_identifier,
parms, binfo, flags);
- expand_expr_stmt (rval);
+ if (TREE_SIDE_EFFECTS (rval))
+ expand_expr_stmt (rval);
}
/* This function is responsible for initializing EXP with INIT
diff --git a/gcc/cp/parse.c b/gcc/cp/parse.c
index 9eebf29..085e87b 100644
--- a/gcc/cp/parse.c
+++ b/gcc/cp/parse.c
@@ -680,43 +680,43 @@ static const short yyrline[] = { 0,
2065, 2069, 2081, 2083, 2086, 2106, 2108, 2111, 2113, 2118,
2120, 2122, 2124, 2126, 2128, 2132, 2137, 2140, 2142, 2146,
2152, 2157, 2162, 2164, 2168, 2173, 2176, 2183, 2211, 2217,
- 2219, 2222, 2225, 2227, 2231, 2233, 2237, 2263, 2292, 2295,
- 2296, 2317, 2340, 2342, 2346, 2357, 2371, 2376, 2383, 2386,
- 2394, 2405, 2414, 2418, 2433, 2436, 2441, 2443, 2445, 2447,
- 2449, 2451, 2454, 2456, 2460, 2466, 2468, 2471, 2474, 2476,
- 2487, 2492, 2495, 2500, 2503, 2504, 2515, 2518, 2519, 2530,
- 2532, 2535, 2537, 2540, 2547, 2555, 2562, 2568, 2574, 2582,
- 2586, 2591, 2595, 2598, 2607, 2609, 2613, 2616, 2621, 2625,
- 2631, 2642, 2645, 2649, 2653, 2661, 2666, 2672, 2675, 2677,
- 2679, 2685, 2688, 2690, 2692, 2694, 2698, 2701, 2719, 2729,
- 2731, 2732, 2736, 2741, 2744, 2746, 2748, 2750, 2754, 2760,
- 2763, 2765, 2767, 2769, 2773, 2776, 2779, 2781, 2783, 2785,
- 2789, 2792, 2795, 2797, 2799, 2801, 2813, 2824, 2828, 2833,
- 2837, 2842, 2844, 2848, 2851, 2853, 2857, 2859, 2860, 2863,
- 2865, 2867, 2873, 2888, 2894, 2900, 2914, 2916, 2920, 2934,
- 2936, 2938, 2942, 2948, 2961, 2963, 2967, 2980, 2986, 2988,
- 2989, 2990, 2998, 3003, 3012, 3013, 3017, 3020, 3026, 3032,
- 3035, 3037, 3039, 3041, 3045, 3049, 3053, 3056, 3061, 3064,
- 3066, 3068, 3070, 3072, 3074, 3076, 3078, 3082, 3086, 3090,
- 3094, 3095, 3097, 3099, 3101, 3103, 3105, 3107, 3109, 3111,
- 3119, 3121, 3122, 3123, 3126, 3132, 3134, 3139, 3141, 3144,
- 3158, 3161, 3164, 3168, 3171, 3178, 3180, 3183, 3185, 3187,
- 3190, 3193, 3196, 3199, 3201, 3204, 3208, 3210, 3216, 3218,
- 3219, 3221, 3226, 3228, 3230, 3232, 3234, 3237, 3238, 3240,
- 3243, 3244, 3247, 3247, 3250, 3250, 3253, 3253, 3255, 3257,
- 3259, 3261, 3267, 3273, 3276, 3279, 3285, 3287, 3289, 3293,
- 3295, 3296, 3297, 3299, 3302, 3309, 3314, 3322, 3326, 3328,
- 3331, 3333, 3336, 3340, 3342, 3345, 3347, 3350, 3367, 3373,
- 3381, 3383, 3385, 3389, 3392, 3393, 3401, 3405, 3409, 3412,
- 3413, 3419, 3422, 3425, 3427, 3431, 3436, 3439, 3449, 3454,
- 3455, 3462, 3465, 3468, 3470, 3473, 3475, 3485, 3499, 3503,
- 3506, 3508, 3512, 3516, 3519, 3522, 3524, 3528, 3530, 3537,
- 3544, 3547, 3550, 3554, 3558, 3564, 3568, 3573, 3575, 3578,
- 3583, 3589, 3600, 3603, 3605, 3609, 3614, 3616, 3623, 3626,
- 3628, 3630, 3636, 3641, 3644, 3646, 3648, 3650, 3652, 3654,
- 3656, 3658, 3660, 3662, 3664, 3666, 3668, 3670, 3672, 3674,
- 3676, 3678, 3680, 3682, 3684, 3686, 3688, 3690, 3692, 3694,
- 3696, 3698, 3700, 3702, 3704, 3706, 3709, 3711
+ 2219, 2222, 2225, 2227, 2231, 2233, 2237, 2270, 2306, 2309,
+ 2310, 2331, 2354, 2356, 2360, 2371, 2385, 2390, 2397, 2400,
+ 2408, 2419, 2428, 2432, 2447, 2450, 2455, 2457, 2459, 2461,
+ 2463, 2465, 2468, 2470, 2474, 2480, 2482, 2485, 2488, 2490,
+ 2501, 2506, 2509, 2514, 2517, 2518, 2529, 2532, 2533, 2544,
+ 2546, 2549, 2551, 2554, 2561, 2569, 2576, 2582, 2588, 2596,
+ 2600, 2605, 2609, 2612, 2621, 2623, 2627, 2630, 2635, 2639,
+ 2645, 2656, 2659, 2663, 2667, 2675, 2680, 2686, 2689, 2691,
+ 2693, 2699, 2702, 2704, 2706, 2708, 2712, 2715, 2733, 2743,
+ 2745, 2746, 2750, 2755, 2758, 2760, 2762, 2764, 2768, 2774,
+ 2777, 2779, 2781, 2783, 2787, 2790, 2793, 2795, 2797, 2799,
+ 2803, 2806, 2809, 2811, 2813, 2815, 2827, 2838, 2842, 2847,
+ 2851, 2856, 2858, 2862, 2865, 2867, 2871, 2873, 2874, 2877,
+ 2879, 2881, 2887, 2902, 2908, 2914, 2928, 2930, 2934, 2948,
+ 2950, 2952, 2956, 2962, 2975, 2977, 2981, 2994, 3000, 3002,
+ 3003, 3004, 3012, 3017, 3026, 3027, 3031, 3034, 3040, 3046,
+ 3049, 3051, 3053, 3055, 3059, 3063, 3067, 3070, 3075, 3078,
+ 3080, 3082, 3084, 3086, 3088, 3090, 3092, 3096, 3100, 3104,
+ 3108, 3109, 3111, 3113, 3115, 3117, 3119, 3121, 3123, 3125,
+ 3133, 3135, 3136, 3137, 3140, 3146, 3148, 3153, 3155, 3158,
+ 3172, 3175, 3178, 3182, 3185, 3192, 3194, 3197, 3199, 3201,
+ 3204, 3207, 3210, 3213, 3215, 3218, 3222, 3224, 3230, 3232,
+ 3233, 3235, 3240, 3242, 3244, 3246, 3248, 3251, 3252, 3254,
+ 3257, 3258, 3261, 3261, 3264, 3264, 3267, 3267, 3269, 3271,
+ 3273, 3275, 3281, 3287, 3290, 3293, 3299, 3301, 3303, 3307,
+ 3309, 3310, 3311, 3313, 3316, 3323, 3328, 3336, 3340, 3342,
+ 3345, 3347, 3350, 3354, 3356, 3359, 3361, 3364, 3381, 3387,
+ 3395, 3397, 3399, 3403, 3406, 3407, 3415, 3419, 3423, 3426,
+ 3427, 3433, 3436, 3439, 3441, 3445, 3450, 3453, 3463, 3468,
+ 3469, 3476, 3479, 3482, 3484, 3487, 3489, 3499, 3513, 3517,
+ 3520, 3522, 3526, 3530, 3533, 3536, 3538, 3542, 3544, 3551,
+ 3558, 3561, 3564, 3568, 3572, 3578, 3582, 3587, 3589, 3592,
+ 3597, 3603, 3614, 3617, 3619, 3623, 3628, 3630, 3637, 3640,
+ 3642, 3644, 3650, 3655, 3658, 3660, 3662, 3664, 3666, 3668,
+ 3670, 3672, 3674, 3676, 3678, 3680, 3682, 3684, 3686, 3688,
+ 3690, 3692, 3694, 3696, 3698, 3700, 3702, 3704, 3706, 3708,
+ 3710, 3712, 3714, 3716, 3718, 3720, 3723, 3725
};
#endif
@@ -6098,7 +6098,14 @@ case 496:
case 497:
#line 2239 "parse.y"
{
- tree type = TREE_TYPE (yyvsp[0].ttype);
+ tree type;
+ if (yyvsp[0].ttype == NULL_TREE)
+ {
+ error ("invalid base class");
+ type = error_mark_node;
+ }
+ else
+ type = TREE_TYPE (yyvsp[0].ttype);
if (! is_aggr_type (type, 1))
yyval.ttype = NULL_TREE;
else if (current_aggr == signature_type_node
@@ -6123,9 +6130,16 @@ case 497:
;
break;}
case 498:
-#line 2264 "parse.y"
+#line 2271 "parse.y"
{
- tree type = TREE_TYPE (yyvsp[0].ttype);
+ tree type;
+ if (yyvsp[0].ttype == NULL_TREE)
+ {
+ error ("invalid base class");
+ type = error_mark_node;
+ }
+ else
+ type = TREE_TYPE (yyvsp[0].ttype);
if (current_aggr == signature_type_node)
error ("access and source specifiers not allowed in signature");
if (! is_aggr_type (type, 1))
@@ -6152,11 +6166,11 @@ case 498:
;
break;}
case 499:
-#line 2294 "parse.y"
+#line 2308 "parse.y"
{ yyval.ttype = TYPE_MAIN_DECL (yyvsp[0].ttype); ;
break;}
case 501:
-#line 2297 "parse.y"
+#line 2311 "parse.y"
{
if (current_aggr == signature_type_node)
{
@@ -6179,7 +6193,7 @@ case 501:
;
break;}
case 502:
-#line 2318 "parse.y"
+#line 2332 "parse.y"
{
if (current_aggr == signature_type_node)
{
@@ -6202,13 +6216,13 @@ case 502:
;
break;}
case 504:
-#line 2343 "parse.y"
+#line 2357 "parse.y"
{ if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL])
cp_error ("`%D' access", yyvsp[-1].ttype);
yyval.ttype = access_default_virtual_node; ;
break;}
case 505:
-#line 2347 "parse.y"
+#line 2361 "parse.y"
{
if (yyvsp[-2].ttype != access_default_virtual_node)
error ("multiple access specifiers");
@@ -6221,7 +6235,7 @@ case 505:
;
break;}
case 506:
-#line 2358 "parse.y"
+#line 2372 "parse.y"
{ if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL])
cp_error ("`%D' access", yyvsp[-1].ttype);
else if (yyval.ttype == access_public_node)
@@ -6235,21 +6249,21 @@ case 506:
;
break;}
case 507:
-#line 2373 "parse.y"
+#line 2387 "parse.y"
{ yyvsp[-1].ttype = begin_class_definition (yyvsp[-1].ttype); ;
break;}
case 508:
-#line 2378 "parse.y"
+#line 2392 "parse.y"
{
yyval.ttype = build_self_reference ();
;
break;}
case 509:
-#line 2385 "parse.y"
+#line 2399 "parse.y"
{ if (yyval.ttype) yyval.ttype = build_tree_list (access_public_node, yyval.ttype); ;
break;}
case 510:
-#line 2387 "parse.y"
+#line 2401 "parse.y"
{
if (current_aggr == signature_type_node)
yyval.ttype = build_tree_list (access_public_node, yyvsp[0].ttype);
@@ -6259,7 +6273,7 @@ case 510:
;
break;}
case 511:
-#line 2395 "parse.y"
+#line 2409 "parse.y"
{
tree visspec = yyvsp[-2].ttype;
@@ -6272,19 +6286,19 @@ case 511:
;
break;}
case 512:
-#line 2406 "parse.y"
+#line 2420 "parse.y"
{
if (current_aggr == signature_type_node)
error ("access specifier not allowed in signature");
;
break;}
case 513:
-#line 2416 "parse.y"
+#line 2430 "parse.y"
{ if (yyval.ttype == void_type_node) yyval.ttype = NULL_TREE;
;
break;}
case 514:
-#line 2419 "parse.y"
+#line 2433 "parse.y"
{ /* In pushdecl, we created a reverse list of names
in this binding level. Make sure that the chain
of what we're trying to add isn't the item itself
@@ -6299,95 +6313,95 @@ case 514:
;
break;}
case 515:
-#line 2435 "parse.y"
+#line 2449 "parse.y"
{ ;
break;}
case 516:
-#line 2437 "parse.y"
+#line 2451 "parse.y"
{ error ("missing ';' before right brace");
yyungetc ('}', 0); ;
break;}
case 517:
-#line 2442 "parse.y"
+#line 2456 "parse.y"
{ yyval.ttype = finish_method (yyval.ttype); ;
break;}
case 518:
-#line 2444 "parse.y"
+#line 2458 "parse.y"
{ yyval.ttype = finish_method (yyval.ttype); ;
break;}
case 519:
-#line 2446 "parse.y"
+#line 2460 "parse.y"
{ yyval.ttype = finish_method (yyval.ttype); ;
break;}
case 520:
-#line 2448 "parse.y"
+#line 2462 "parse.y"
{ yyval.ttype = finish_method (yyval.ttype); ;
break;}
case 521:
-#line 2450 "parse.y"
+#line 2464 "parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 522:
-#line 2452 "parse.y"
+#line 2466 "parse.y"
{ yyval.ttype = yyvsp[0].ttype;
pedantic = yyvsp[-1].itype; ;
break;}
case 523:
-#line 2455 "parse.y"
+#line 2469 "parse.y"
{ yyval.ttype = finish_member_template_decl (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 524:
-#line 2457 "parse.y"
+#line 2471 "parse.y"
{ yyval.ttype = finish_member_class_template (yyvsp[-2].ttype, yyvsp[-1].ftype.t); ;
break;}
case 525:
-#line 2465 "parse.y"
+#line 2479 "parse.y"
{ yyval.ttype = grok_x_components (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;}
case 526:
-#line 2467 "parse.y"
+#line 2481 "parse.y"
{ yyval.ttype = grok_x_components (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 527:
-#line 2469 "parse.y"
+#line 2483 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
break;}
case 528:
-#line 2472 "parse.y"
+#line 2486 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
break;}
case 529:
-#line 2475 "parse.y"
+#line 2489 "parse.y"
{ yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;
break;}
case 530:
-#line 2477 "parse.y"
+#line 2491 "parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 531:
-#line 2488 "parse.y"
+#line 2502 "parse.y"
{ tree specs, attrs;
split_specs_attrs (yyvsp[-4].ttype, &specs, &attrs);
yyval.ttype = grokfield (yyvsp[-3].ttype, specs, yyvsp[0].ttype, yyvsp[-2].ttype,
build_tree_list (yyvsp[-1].ttype, attrs)); ;
break;}
case 532:
-#line 2493 "parse.y"
+#line 2507 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
break;}
case 533:
-#line 2496 "parse.y"
+#line 2510 "parse.y"
{ yyval.ttype = do_class_using_decl (yyvsp[0].ttype); ;
break;}
case 534:
-#line 2502 "parse.y"
+#line 2516 "parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 536:
-#line 2505 "parse.y"
+#line 2519 "parse.y"
{
/* In this context, void_type_node encodes
friends. They have been recorded elsewhere. */
@@ -6398,11 +6412,11 @@ case 536:
;
break;}
case 537:
-#line 2517 "parse.y"
+#line 2531 "parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 539:
-#line 2520 "parse.y"
+#line 2534 "parse.y"
{
/* In this context, void_type_node encodes
friends. They have been recorded elsewhere. */
@@ -6413,7 +6427,7 @@ case 539:
;
break;}
case 544:
-#line 2542 "parse.y"
+#line 2556 "parse.y"
{ split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
&prefix_attributes);
yyvsp[-4].ttype = current_declspecs;
@@ -6421,7 +6435,7 @@ case 544:
build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
break;}
case 545:
-#line 2548 "parse.y"
+#line 2562 "parse.y"
{ split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
&prefix_attributes);
yyvsp[-4].ttype = current_declspecs;
@@ -6429,7 +6443,7 @@ case 545:
cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
break;}
case 546:
-#line 2557 "parse.y"
+#line 2571 "parse.y"
{ split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
&prefix_attributes);
yyvsp[-4].ttype = current_declspecs;
@@ -6437,7 +6451,7 @@ case 546:
build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
break;}
case 547:
-#line 2563 "parse.y"
+#line 2577 "parse.y"
{ split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
&prefix_attributes);
yyvsp[-4].ttype = current_declspecs;
@@ -6445,7 +6459,7 @@ case 547:
build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
break;}
case 548:
-#line 2569 "parse.y"
+#line 2583 "parse.y"
{ split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
&prefix_attributes);
yyvsp[-4].ttype = current_declspecs;
@@ -6453,7 +6467,7 @@ case 548:
cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
break;}
case 549:
-#line 2575 "parse.y"
+#line 2589 "parse.y"
{ split_specs_attrs (yyvsp[-3].ttype, &current_declspecs,
&prefix_attributes);
yyvsp[-3].ttype = current_declspecs;
@@ -6461,54 +6475,54 @@ case 549:
cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
break;}
case 550:
-#line 2584 "parse.y"
+#line 2598 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
break;}
case 551:
-#line 2587 "parse.y"
+#line 2601 "parse.y"
{ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
break;}
case 552:
-#line 2593 "parse.y"
+#line 2607 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
break;}
case 553:
-#line 2596 "parse.y"
+#line 2610 "parse.y"
{ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
break;}
case 554:
-#line 2599 "parse.y"
+#line 2613 "parse.y"
{ yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
break;}
case 556:
-#line 2610 "parse.y"
+#line 2624 "parse.y"
{ TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
break;}
case 557:
-#line 2615 "parse.y"
+#line 2629 "parse.y"
{ yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE); ;
break;}
case 558:
-#line 2617 "parse.y"
+#line 2631 "parse.y"
{ yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype); ;
break;}
case 559:
-#line 2623 "parse.y"
+#line 2637 "parse.y"
{ yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;}
case 560:
-#line 2626 "parse.y"
+#line 2640 "parse.y"
{ yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE);
yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
break;}
case 561:
-#line 2633 "parse.y"
+#line 2647 "parse.y"
{
if (pedantic)
pedwarn ("ANSI C++ forbids array dimensions with parenthesized type in new");
@@ -6518,71 +6532,71 @@ case 561:
;
break;}
case 562:
-#line 2644 "parse.y"
+#line 2658 "parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 563:
-#line 2646 "parse.y"
+#line 2660 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
break;}
case 564:
-#line 2651 "parse.y"
+#line 2665 "parse.y"
{ yyval.ftype.t = IDENTIFIER_AS_LIST (yyvsp[0].ttype);
yyval.ftype.new_type_flag = 0; ;
break;}
case 565:
-#line 2654 "parse.y"
+#line 2668 "parse.y"
{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;}
case 566:
-#line 2663 "parse.y"
+#line 2677 "parse.y"
{ yyval.itype = suspend_momentary (); ;
break;}
case 567:
-#line 2668 "parse.y"
+#line 2682 "parse.y"
{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ;
break;}
case 568:
-#line 2674 "parse.y"
+#line 2688 "parse.y"
{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ;
break;}
case 569:
-#line 2676 "parse.y"
+#line 2690 "parse.y"
{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ;
break;}
case 570:
-#line 2678 "parse.y"
+#line 2692 "parse.y"
{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = empty_parms (); ;
break;}
case 571:
-#line 2680 "parse.y"
+#line 2694 "parse.y"
{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = NULL_TREE; ;
break;}
case 572:
-#line 2687 "parse.y"
+#line 2701 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;}
case 573:
-#line 2689 "parse.y"
+#line 2703 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;}
case 574:
-#line 2691 "parse.y"
+#line 2705 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 575:
-#line 2693 "parse.y"
+#line 2707 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 576:
-#line 2695 "parse.y"
+#line 2709 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
;
break;}
case 578:
-#line 2703 "parse.y"
+#line 2717 "parse.y"
{
if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
{
@@ -6601,7 +6615,7 @@ case 578:
;
break;}
case 579:
-#line 2720 "parse.y"
+#line 2734 "parse.y"
{
if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
@@ -6611,97 +6625,97 @@ case 579:
;
break;}
case 582:
-#line 2733 "parse.y"
+#line 2747 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
case 583:
-#line 2738 "parse.y"
+#line 2752 "parse.y"
{ yyval.ttype = get_type_decl (yyvsp[0].ttype); ;
break;}
case 584:
-#line 2743 "parse.y"
+#line 2757 "parse.y"
{ yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 585:
-#line 2745 "parse.y"
+#line 2759 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
break;}
case 586:
-#line 2747 "parse.y"
+#line 2761 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
break;}
case 587:
-#line 2749 "parse.y"
+#line 2763 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
break;}
case 588:
-#line 2751 "parse.y"
+#line 2765 "parse.y"
{ push_nested_class (yyvsp[-1].ttype, 3);
yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype);
TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ;
break;}
case 590:
-#line 2762 "parse.y"
+#line 2776 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;}
case 591:
-#line 2764 "parse.y"
+#line 2778 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;}
case 592:
-#line 2766 "parse.y"
+#line 2780 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 593:
-#line 2768 "parse.y"
+#line 2782 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 594:
-#line 2770 "parse.y"
+#line 2784 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
;
break;}
case 596:
-#line 2778 "parse.y"
+#line 2792 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;}
case 597:
-#line 2780 "parse.y"
+#line 2794 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;}
case 598:
-#line 2782 "parse.y"
+#line 2796 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 599:
-#line 2784 "parse.y"
+#line 2798 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 600:
-#line 2786 "parse.y"
+#line 2800 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
;
break;}
case 602:
-#line 2794 "parse.y"
+#line 2808 "parse.y"
{ yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 603:
-#line 2796 "parse.y"
+#line 2810 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
break;}
case 604:
-#line 2798 "parse.y"
+#line 2812 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
break;}
case 605:
-#line 2800 "parse.y"
+#line 2814 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
break;}
case 606:
-#line 2802 "parse.y"
+#line 2816 "parse.y"
{ if (TREE_CODE (OP0 (yyvsp[0].ttype)) == NAMESPACE_DECL)
{
push_decl_namespace (OP0 (yyvsp[0].ttype));
@@ -6715,7 +6729,7 @@ case 606:
;
break;}
case 607:
-#line 2814 "parse.y"
+#line 2828 "parse.y"
{ got_scope = NULL_TREE;
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype);
if (yyvsp[-1].ttype != current_class_type)
@@ -6726,51 +6740,51 @@ case 607:
;
break;}
case 608:
-#line 2826 "parse.y"
+#line 2840 "parse.y"
{ got_scope = NULL_TREE;
yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
break;}
case 609:
-#line 2829 "parse.y"
+#line 2843 "parse.y"
{ got_scope = NULL_TREE;
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 610:
-#line 2835 "parse.y"
+#line 2849 "parse.y"
{ got_scope = NULL_TREE;
yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
break;}
case 611:
-#line 2838 "parse.y"
+#line 2852 "parse.y"
{ got_scope = NULL_TREE;
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 613:
-#line 2845 "parse.y"
+#line 2859 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
case 614:
-#line 2850 "parse.y"
+#line 2864 "parse.y"
{ yyval.ttype = build_functional_cast (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ;
break;}
case 615:
-#line 2852 "parse.y"
+#line 2866 "parse.y"
{ yyval.ttype = reparse_decl_as_expr (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ;
break;}
case 616:
-#line 2854 "parse.y"
+#line 2868 "parse.y"
{ yyval.ttype = reparse_absdcl_as_expr (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;}
case 621:
-#line 2866 "parse.y"
+#line 2880 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
case 622:
-#line 2868 "parse.y"
+#line 2882 "parse.y"
{ got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
case 623:
-#line 2875 "parse.y"
+#line 2889 "parse.y"
{
if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE)
{
@@ -6786,7 +6800,7 @@ case 623:
;
break;}
case 624:
-#line 2889 "parse.y"
+#line 2903 "parse.y"
{
if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE)
yyval.ttype = lastiddecl;
@@ -6794,7 +6808,7 @@ case 624:
;
break;}
case 625:
-#line 2895 "parse.y"
+#line 2909 "parse.y"
{
if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
yyval.ttype = lastiddecl;
@@ -6802,15 +6816,15 @@ case 625:
;
break;}
case 626:
-#line 2901 "parse.y"
+#line 2915 "parse.y"
{ got_scope = yyval.ttype = complete_type (TREE_TYPE (yyvsp[-1].ttype)); ;
break;}
case 628:
-#line 2917 "parse.y"
+#line 2931 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
case 629:
-#line 2922 "parse.y"
+#line 2936 "parse.y"
{
if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't')
yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype);
@@ -6825,26 +6839,26 @@ case 629:
;
break;}
case 630:
-#line 2935 "parse.y"
+#line 2949 "parse.y"
{ yyval.ttype = TREE_TYPE (yyvsp[0].ttype); ;
break;}
case 631:
-#line 2937 "parse.y"
+#line 2951 "parse.y"
{ yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 632:
-#line 2939 "parse.y"
+#line 2953 "parse.y"
{ yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 633:
-#line 2944 "parse.y"
+#line 2958 "parse.y"
{
if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
cp_error ("`%T' is not a class or namespace", yyvsp[0].ttype);
;
break;}
case 634:
-#line 2949 "parse.y"
+#line 2963 "parse.y"
{
if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't')
yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype);
@@ -6859,15 +6873,15 @@ case 634:
;
break;}
case 635:
-#line 2962 "parse.y"
+#line 2976 "parse.y"
{ got_scope = yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
break;}
case 636:
-#line 2964 "parse.y"
+#line 2978 "parse.y"
{ got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
case 637:
-#line 2969 "parse.y"
+#line 2983 "parse.y"
{
if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE)
yyvsp[-1].ttype = lastiddecl;
@@ -6881,7 +6895,7 @@ case 637:
;
break;}
case 638:
-#line 2981 "parse.y"
+#line 2995 "parse.y"
{
if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE)
yyval.ttype = lastiddecl;
@@ -6889,11 +6903,11 @@ case 638:
;
break;}
case 639:
-#line 2987 "parse.y"
+#line 3001 "parse.y"
{ got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); ;
break;}
case 642:
-#line 2991 "parse.y"
+#line 3005 "parse.y"
{
if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
yyval.ttype = lastiddecl;
@@ -6901,11 +6915,11 @@ case 642:
;
break;}
case 643:
-#line 3000 "parse.y"
+#line 3014 "parse.y"
{ yyval.ttype = build_min_nt (TEMPLATE_ID_EXPR, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
case 644:
-#line 3005 "parse.y"
+#line 3019 "parse.y"
{
if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
@@ -6915,148 +6929,148 @@ case 644:
;
break;}
case 646:
-#line 3014 "parse.y"
+#line 3028 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
case 647:
-#line 3019 "parse.y"
+#line 3033 "parse.y"
{ got_scope = NULL_TREE; ;
break;}
case 648:
-#line 3021 "parse.y"
+#line 3035 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ;
break;}
case 649:
-#line 3028 "parse.y"
+#line 3042 "parse.y"
{ got_scope = void_type_node; ;
break;}
case 650:
-#line 3034 "parse.y"
+#line 3048 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 651:
-#line 3036 "parse.y"
+#line 3050 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
break;}
case 652:
-#line 3038 "parse.y"
+#line 3052 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 653:
-#line 3040 "parse.y"
+#line 3054 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
break;}
case 654:
-#line 3042 "parse.y"
+#line 3056 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
;
break;}
case 655:
-#line 3046 "parse.y"
+#line 3060 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
;
break;}
case 657:
-#line 3055 "parse.y"
+#line 3069 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
break;}
case 658:
-#line 3057 "parse.y"
+#line 3071 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
break;}
case 659:
-#line 3063 "parse.y"
+#line 3077 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;}
case 660:
-#line 3065 "parse.y"
+#line 3079 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 661:
-#line 3067 "parse.y"
+#line 3081 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[0].ftype.t, NULL_TREE); ;
break;}
case 662:
-#line 3069 "parse.y"
+#line 3083 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ;
break;}
case 663:
-#line 3071 "parse.y"
+#line 3085 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;}
case 664:
-#line 3073 "parse.y"
+#line 3087 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 665:
-#line 3075 "parse.y"
+#line 3089 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[0].ftype.t, NULL_TREE); ;
break;}
case 666:
-#line 3077 "parse.y"
+#line 3091 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ;
break;}
case 667:
-#line 3079 "parse.y"
+#line 3093 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
;
break;}
case 668:
-#line 3083 "parse.y"
+#line 3097 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
;
break;}
case 670:
-#line 3092 "parse.y"
+#line 3106 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
break;}
case 672:
-#line 3096 "parse.y"
+#line 3110 "parse.y"
{ yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 673:
-#line 3098 "parse.y"
+#line 3112 "parse.y"
{ yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 674:
-#line 3100 "parse.y"
+#line 3114 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
break;}
case 675:
-#line 3102 "parse.y"
+#line 3116 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
break;}
case 676:
-#line 3104 "parse.y"
+#line 3118 "parse.y"
{ yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 677:
-#line 3106 "parse.y"
+#line 3120 "parse.y"
{ set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 678:
-#line 3108 "parse.y"
+#line 3122 "parse.y"
{ set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 679:
-#line 3110 "parse.y"
+#line 3124 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
break;}
case 680:
-#line 3112 "parse.y"
+#line 3126 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ;
break;}
case 687:
-#line 3135 "parse.y"
+#line 3149 "parse.y"
{ if (pedantic)
pedwarn ("ANSI C++ forbids label declarations"); ;
break;}
case 690:
-#line 3146 "parse.y"
+#line 3160 "parse.y"
{ tree link;
for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
{
@@ -7067,181 +7081,181 @@ case 690:
;
break;}
case 691:
-#line 3160 "parse.y"
+#line 3174 "parse.y"
{;
break;}
case 693:
-#line 3166 "parse.y"
+#line 3180 "parse.y"
{ yyval.ttype = begin_compound_stmt (0); ;
break;}
case 694:
-#line 3168 "parse.y"
+#line 3182 "parse.y"
{ yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ;
break;}
case 695:
-#line 3173 "parse.y"
+#line 3187 "parse.y"
{
yyval.ttype = begin_if_stmt ();
cond_stmt_keyword = "if";
;
break;}
case 696:
-#line 3178 "parse.y"
+#line 3192 "parse.y"
{ finish_if_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ;
break;}
case 697:
-#line 3180 "parse.y"
+#line 3194 "parse.y"
{ yyval.ttype = finish_then_clause (yyvsp[-3].ttype); ;
break;}
case 699:
-#line 3185 "parse.y"
+#line 3199 "parse.y"
{ yyval.ttype = begin_compound_stmt (0); ;
break;}
case 700:
-#line 3187 "parse.y"
+#line 3201 "parse.y"
{ yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ;
break;}
case 701:
-#line 3192 "parse.y"
+#line 3206 "parse.y"
{;
break;}
case 703:
-#line 3198 "parse.y"
+#line 3212 "parse.y"
{ finish_stmt (); ;
break;}
case 704:
-#line 3200 "parse.y"
+#line 3214 "parse.y"
{ finish_expr_stmt (yyvsp[-1].ttype); ;
break;}
case 705:
-#line 3202 "parse.y"
+#line 3216 "parse.y"
{ begin_else_clause (); ;
break;}
case 706:
-#line 3204 "parse.y"
+#line 3218 "parse.y"
{
finish_else_clause (yyvsp[-3].ttype);
finish_if_stmt ();
;
break;}
case 707:
-#line 3209 "parse.y"
+#line 3223 "parse.y"
{ finish_if_stmt (); ;
break;}
case 708:
-#line 3211 "parse.y"
+#line 3225 "parse.y"
{
yyval.ttype = begin_while_stmt ();
cond_stmt_keyword = "while";
;
break;}
case 709:
-#line 3216 "parse.y"
+#line 3230 "parse.y"
{ finish_while_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ;
break;}
case 710:
-#line 3218 "parse.y"
+#line 3232 "parse.y"
{ finish_while_stmt (yyvsp[-3].ttype); ;
break;}
case 711:
-#line 3220 "parse.y"
+#line 3234 "parse.y"
{ yyval.ttype = begin_do_stmt (); ;
break;}
case 712:
-#line 3222 "parse.y"
+#line 3236 "parse.y"
{
finish_do_body (yyvsp[-2].ttype);
cond_stmt_keyword = "do";
;
break;}
case 713:
-#line 3227 "parse.y"
+#line 3241 "parse.y"
{ finish_do_stmt (yyvsp[-1].ttype, yyvsp[-5].ttype); ;
break;}
case 714:
-#line 3229 "parse.y"
+#line 3243 "parse.y"
{ yyval.ttype = begin_for_stmt (); ;
break;}
case 715:
-#line 3231 "parse.y"
+#line 3245 "parse.y"
{ finish_for_init_stmt (yyvsp[-2].ttype); ;
break;}
case 716:
-#line 3233 "parse.y"
+#line 3247 "parse.y"
{ finish_for_cond (yyvsp[-1].ttype, yyvsp[-5].ttype); ;
break;}
case 717:
-#line 3235 "parse.y"
+#line 3249 "parse.y"
{ finish_for_expr (yyvsp[-1].ttype, yyvsp[-8].ttype); ;
break;}
case 718:
-#line 3237 "parse.y"
+#line 3251 "parse.y"
{ finish_for_stmt (yyvsp[-3].ttype, yyvsp[-10].ttype); ;
break;}
case 719:
-#line 3239 "parse.y"
+#line 3253 "parse.y"
{ begin_switch_stmt (); ;
break;}
case 720:
-#line 3241 "parse.y"
+#line 3255 "parse.y"
{ yyval.ttype = finish_switch_cond (yyvsp[-1].ttype); ;
break;}
case 721:
-#line 3243 "parse.y"
+#line 3257 "parse.y"
{ finish_switch_stmt (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
case 722:
-#line 3245 "parse.y"
+#line 3259 "parse.y"
{ finish_case_label (yyvsp[-1].ttype, NULL_TREE); ;
break;}
case 724:
-#line 3248 "parse.y"
+#line 3262 "parse.y"
{ finish_case_label (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
case 726:
-#line 3251 "parse.y"
+#line 3265 "parse.y"
{ finish_case_label (NULL_TREE, NULL_TREE); ;
break;}
case 728:
-#line 3254 "parse.y"
+#line 3268 "parse.y"
{ finish_break_stmt (); ;
break;}
case 729:
-#line 3256 "parse.y"
+#line 3270 "parse.y"
{ finish_continue_stmt (); ;
break;}
case 730:
-#line 3258 "parse.y"
+#line 3272 "parse.y"
{ finish_return_stmt (NULL_TREE); ;
break;}
case 731:
-#line 3260 "parse.y"
+#line 3274 "parse.y"
{ finish_return_stmt (yyvsp[-1].ttype); ;
break;}
case 732:
-#line 3262 "parse.y"
+#line 3276 "parse.y"
{
finish_asm_stmt (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
NULL_TREE);
;
break;}
case 733:
-#line 3268 "parse.y"
+#line 3282 "parse.y"
{
finish_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
NULL_TREE);
;
break;}
case 734:
-#line 3274 "parse.y"
+#line 3288 "parse.y"
{ finish_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ;
break;}
case 735:
-#line 3278 "parse.y"
+#line 3292 "parse.y"
{ finish_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ;
break;}
case 736:
-#line 3280 "parse.y"
+#line 3294 "parse.y"
{
if (pedantic)
pedwarn ("ANSI C++ forbids computed gotos");
@@ -7249,29 +7263,29 @@ case 736:
;
break;}
case 737:
-#line 3286 "parse.y"
+#line 3300 "parse.y"
{ finish_goto_stmt (yyvsp[-1].ttype); ;
break;}
case 738:
-#line 3288 "parse.y"
+#line 3302 "parse.y"
{ finish_stmt (); ;
break;}
case 739:
-#line 3290 "parse.y"
+#line 3304 "parse.y"
{ error ("label must be followed by statement");
yyungetc ('}', 0);
finish_stmt (); ;
break;}
case 740:
-#line 3294 "parse.y"
+#line 3308 "parse.y"
{ finish_stmt (); ;
break;}
case 743:
-#line 3298 "parse.y"
+#line 3312 "parse.y"
{ do_local_using_decl (yyvsp[0].ttype); ;
break;}
case 745:
-#line 3304 "parse.y"
+#line 3318 "parse.y"
{
if (! current_function_parms_stored)
store_parm_decls ();
@@ -7279,13 +7293,13 @@ case 745:
;
break;}
case 746:
-#line 3310 "parse.y"
+#line 3324 "parse.y"
{
expand_start_all_catch ();
;
break;}
case 747:
-#line 3314 "parse.y"
+#line 3328 "parse.y"
{
int nested = (hack_decl_function_context
(current_function_decl) != NULL_TREE);
@@ -7294,41 +7308,41 @@ case 747:
;
break;}
case 748:
-#line 3324 "parse.y"
+#line 3338 "parse.y"
{ yyval.ttype = begin_try_block (); ;
break;}
case 749:
-#line 3326 "parse.y"
+#line 3340 "parse.y"
{ finish_try_block (yyvsp[-1].ttype); ;
break;}
case 750:
-#line 3328 "parse.y"
+#line 3342 "parse.y"
{ finish_handler_sequence (yyvsp[-3].ttype); ;
break;}
case 753:
-#line 3338 "parse.y"
+#line 3352 "parse.y"
{ yyval.ttype = begin_handler(); ;
break;}
case 754:
-#line 3340 "parse.y"
+#line 3354 "parse.y"
{ finish_handler_parms (yyvsp[-1].ttype); ;
break;}
case 755:
-#line 3342 "parse.y"
+#line 3356 "parse.y"
{ finish_handler (yyvsp[-3].ttype); ;
break;}
case 758:
-#line 3352 "parse.y"
+#line 3366 "parse.y"
{ expand_start_catch_block (NULL_TREE, NULL_TREE); ;
break;}
case 759:
-#line 3368 "parse.y"
+#line 3382 "parse.y"
{ check_for_new_type ("inside exception declarations", yyvsp[-1].ftype);
expand_start_catch_block (TREE_PURPOSE (yyvsp[-1].ftype.t),
TREE_VALUE (yyvsp[-1].ftype.t)); ;
break;}
case 760:
-#line 3375 "parse.y"
+#line 3389 "parse.y"
{ tree label;
do_label:
label = define_label (input_filename, lineno, yyvsp[-1].ttype);
@@ -7337,98 +7351,98 @@ case 760:
;
break;}
case 761:
-#line 3382 "parse.y"
+#line 3396 "parse.y"
{ goto do_label; ;
break;}
case 762:
-#line 3384 "parse.y"
+#line 3398 "parse.y"
{ goto do_label; ;
break;}
case 763:
-#line 3386 "parse.y"
+#line 3400 "parse.y"
{ goto do_label; ;
break;}
case 764:
-#line 3391 "parse.y"
+#line 3405 "parse.y"
{ if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ;
break;}
case 766:
-#line 3394 "parse.y"
+#line 3408 "parse.y"
{ if (pedantic)
pedwarn ("ANSI C++ forbids compound statements inside for initializations");
;
break;}
case 767:
-#line 3403 "parse.y"
+#line 3417 "parse.y"
{ emit_line_note (input_filename, lineno);
yyval.ttype = NULL_TREE; ;
break;}
case 768:
-#line 3406 "parse.y"
+#line 3420 "parse.y"
{ emit_line_note (input_filename, lineno); ;
break;}
case 769:
-#line 3411 "parse.y"
+#line 3425 "parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 771:
-#line 3414 "parse.y"
+#line 3428 "parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 772:
-#line 3421 "parse.y"
+#line 3435 "parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 775:
-#line 3428 "parse.y"
+#line 3442 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
break;}
case 776:
-#line 3433 "parse.y"
+#line 3447 "parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ;
break;}
case 777:
-#line 3438 "parse.y"
+#line 3452 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ;
break;}
case 778:
-#line 3440 "parse.y"
+#line 3454 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
break;}
case 779:
-#line 3451 "parse.y"
+#line 3465 "parse.y"
{
yyval.ttype = empty_parms();
;
break;}
case 781:
-#line 3456 "parse.y"
+#line 3470 "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 782:
-#line 3464 "parse.y"
+#line 3478 "parse.y"
{ yyval.ttype = finish_parmlist (yyval.ttype, 0); ;
break;}
case 783:
-#line 3466 "parse.y"
+#line 3480 "parse.y"
{ yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ;
break;}
case 784:
-#line 3469 "parse.y"
+#line 3483 "parse.y"
{ yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ;
break;}
case 785:
-#line 3471 "parse.y"
+#line 3485 "parse.y"
{ yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE,
yyvsp[-1].ftype.t), 1); ;
break;}
case 786:
-#line 3474 "parse.y"
+#line 3488 "parse.y"
{ yyval.ttype = finish_parmlist (NULL_TREE, 1); ;
break;}
case 787:
-#line 3476 "parse.y"
+#line 3490 "parse.y"
{
/* This helps us recover from really nasty
parse errors, for example, a missing right
@@ -7440,7 +7454,7 @@ case 787:
;
break;}
case 788:
-#line 3486 "parse.y"
+#line 3500 "parse.y"
{
/* This helps us recover from really nasty
parse errors, for example, a missing right
@@ -7453,98 +7467,98 @@ case 788:
;
break;}
case 789:
-#line 3501 "parse.y"
+#line 3515 "parse.y"
{ maybe_snarf_defarg (); ;
break;}
case 790:
-#line 3503 "parse.y"
+#line 3517 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
case 793:
-#line 3514 "parse.y"
+#line 3528 "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 794:
-#line 3517 "parse.y"
+#line 3531 "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 795:
-#line 3520 "parse.y"
+#line 3534 "parse.y"
{ check_for_new_type ("in a parameter list", yyvsp[0].ftype);
yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ;
break;}
case 796:
-#line 3523 "parse.y"
+#line 3537 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
break;}
case 797:
-#line 3525 "parse.y"
+#line 3539 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
break;}
case 799:
-#line 3531 "parse.y"
+#line 3545 "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 800:
-#line 3541 "parse.y"
+#line 3555 "parse.y"
{ tree specs = strip_attrs (yyvsp[-1].ftype.t);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag;
yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); ;
break;}
case 801:
-#line 3545 "parse.y"
+#line 3559 "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 802:
-#line 3548 "parse.y"
+#line 3562 "parse.y"
{ yyval.ftype.t = build_tree_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;}
case 803:
-#line 3551 "parse.y"
+#line 3565 "parse.y"
{ tree specs = strip_attrs (yyvsp[-1].ftype.t);
yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;}
case 804:
-#line 3555 "parse.y"
+#line 3569 "parse.y"
{ tree specs = strip_attrs (yyvsp[0].ftype.t);
yyval.ftype.t = build_tree_list (specs, NULL_TREE);
yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
break;}
case 805:
-#line 3559 "parse.y"
+#line 3573 "parse.y"
{ tree specs = strip_attrs (yyvsp[-1].ttype);
yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype);
yyval.ftype.new_type_flag = 0; ;
break;}
case 806:
-#line 3566 "parse.y"
+#line 3580 "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 807:
-#line 3569 "parse.y"
+#line 3583 "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 810:
-#line 3580 "parse.y"
+#line 3594 "parse.y"
{ see_typename (); ;
break;}
case 811:
-#line 3585 "parse.y"
+#line 3599 "parse.y"
{
error ("type specifier omitted for parameter");
yyval.ttype = build_tree_list (integer_type_node, NULL_TREE);
;
break;}
case 812:
-#line 3590 "parse.y"
+#line 3604 "parse.y"
{
error ("type specifier omitted for parameter");
if (TREE_CODE (yyval.ttype) == SCOPE_REF
@@ -7555,188 +7569,188 @@ case 812:
;
break;}
case 813:
-#line 3602 "parse.y"
+#line 3616 "parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 814:
-#line 3604 "parse.y"
+#line 3618 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
break;}
case 815:
-#line 3606 "parse.y"
+#line 3620 "parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, NULL_TREE); ;
break;}
case 816:
-#line 3611 "parse.y"
+#line 3625 "parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, groktypename(yyvsp[0].ftype.t)); ;
break;}
case 818:
-#line 3617 "parse.y"
+#line 3631 "parse.y"
{
TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype;
yyval.ttype = yyvsp[0].ttype;
;
break;}
case 819:
-#line 3625 "parse.y"
+#line 3639 "parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 820:
-#line 3627 "parse.y"
+#line 3641 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 821:
-#line 3629 "parse.y"
+#line 3643 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 822:
-#line 3631 "parse.y"
+#line 3645 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
;
break;}
case 823:
-#line 3638 "parse.y"
+#line 3652 "parse.y"
{ got_scope = NULL_TREE; ;
break;}
case 824:
-#line 3643 "parse.y"
+#line 3657 "parse.y"
{ yyval.ttype = ansi_opname[MULT_EXPR]; ;
break;}
case 825:
-#line 3645 "parse.y"
+#line 3659 "parse.y"
{ yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ;
break;}
case 826:
-#line 3647 "parse.y"
+#line 3661 "parse.y"
{ yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ;
break;}
case 827:
-#line 3649 "parse.y"
+#line 3663 "parse.y"
{ yyval.ttype = ansi_opname[PLUS_EXPR]; ;
break;}
case 828:
-#line 3651 "parse.y"
+#line 3665 "parse.y"
{ yyval.ttype = ansi_opname[MINUS_EXPR]; ;
break;}
case 829:
-#line 3653 "parse.y"
+#line 3667 "parse.y"
{ yyval.ttype = ansi_opname[BIT_AND_EXPR]; ;
break;}
case 830:
-#line 3655 "parse.y"
+#line 3669 "parse.y"
{ yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ;
break;}
case 831:
-#line 3657 "parse.y"
+#line 3671 "parse.y"
{ yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ;
break;}
case 832:
-#line 3659 "parse.y"
+#line 3673 "parse.y"
{ yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ;
break;}
case 833:
-#line 3661 "parse.y"
+#line 3675 "parse.y"
{ yyval.ttype = ansi_opname[COMPOUND_EXPR]; ;
break;}
case 834:
-#line 3663 "parse.y"
+#line 3677 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
break;}
case 835:
-#line 3665 "parse.y"
+#line 3679 "parse.y"
{ yyval.ttype = ansi_opname[LT_EXPR]; ;
break;}
case 836:
-#line 3667 "parse.y"
+#line 3681 "parse.y"
{ yyval.ttype = ansi_opname[GT_EXPR]; ;
break;}
case 837:
-#line 3669 "parse.y"
+#line 3683 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
break;}
case 838:
-#line 3671 "parse.y"
+#line 3685 "parse.y"
{ yyval.ttype = ansi_assopname[yyvsp[0].code]; ;
break;}
case 839:
-#line 3673 "parse.y"
+#line 3687 "parse.y"
{ yyval.ttype = ansi_opname [MODIFY_EXPR]; ;
break;}
case 840:
-#line 3675 "parse.y"
+#line 3689 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
break;}
case 841:
-#line 3677 "parse.y"
+#line 3691 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
break;}
case 842:
-#line 3679 "parse.y"
+#line 3693 "parse.y"
{ yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ;
break;}
case 843:
-#line 3681 "parse.y"
+#line 3695 "parse.y"
{ yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ;
break;}
case 844:
-#line 3683 "parse.y"
+#line 3697 "parse.y"
{ yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ;
break;}
case 845:
-#line 3685 "parse.y"
+#line 3699 "parse.y"
{ yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ;
break;}
case 846:
-#line 3687 "parse.y"
+#line 3701 "parse.y"
{ yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ;
break;}
case 847:
-#line 3689 "parse.y"
+#line 3703 "parse.y"
{ yyval.ttype = ansi_opname[COND_EXPR]; ;
break;}
case 848:
-#line 3691 "parse.y"
+#line 3705 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
break;}
case 849:
-#line 3693 "parse.y"
+#line 3707 "parse.y"
{ yyval.ttype = ansi_opname[COMPONENT_REF]; ;
break;}
case 850:
-#line 3695 "parse.y"
+#line 3709 "parse.y"
{ yyval.ttype = ansi_opname[MEMBER_REF]; ;
break;}
case 851:
-#line 3697 "parse.y"
+#line 3711 "parse.y"
{ yyval.ttype = ansi_opname[CALL_EXPR]; ;
break;}
case 852:
-#line 3699 "parse.y"
+#line 3713 "parse.y"
{ yyval.ttype = ansi_opname[ARRAY_REF]; ;
break;}
case 853:
-#line 3701 "parse.y"
+#line 3715 "parse.y"
{ yyval.ttype = ansi_opname[NEW_EXPR]; ;
break;}
case 854:
-#line 3703 "parse.y"
+#line 3717 "parse.y"
{ yyval.ttype = ansi_opname[DELETE_EXPR]; ;
break;}
case 855:
-#line 3705 "parse.y"
+#line 3719 "parse.y"
{ yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ;
break;}
case 856:
-#line 3707 "parse.y"
+#line 3721 "parse.y"
{ yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ;
break;}
case 857:
-#line 3710 "parse.y"
+#line 3724 "parse.y"
{ yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;}
case 858:
-#line 3712 "parse.y"
+#line 3726 "parse.y"
{ yyval.ttype = ansi_opname[ERROR_MARK]; ;
break;}
}
@@ -7937,7 +7951,7 @@ yyerrhandle:
yystate = yyn;
goto yynewstate;
}
-#line 3715 "parse.y"
+#line 3729 "parse.y"
#ifdef SPEW_DEBUG
diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y
index 5057378..2dab9f0 100644
--- a/gcc/cp/parse.y
+++ b/gcc/cp/parse.y
@@ -2237,7 +2237,14 @@ base_class_list:
base_class:
base_class.1
{
- tree type = TREE_TYPE ($1);
+ tree type;
+ if ($1 == NULL_TREE)
+ {
+ error ("invalid base class");
+ type = error_mark_node;
+ }
+ else
+ type = TREE_TYPE ($1);
if (! is_aggr_type (type, 1))
$$ = NULL_TREE;
else if (current_aggr == signature_type_node
@@ -2262,7 +2269,14 @@ base_class:
}
| base_class_access_list see_typename base_class.1
{
- tree type = TREE_TYPE ($3);
+ tree type;
+ if ($3 == NULL_TREE)
+ {
+ error ("invalid base class");
+ type = error_mark_node;
+ }
+ else
+ type = TREE_TYPE ($3);
if (current_aggr == signature_type_node)
error ("access and source specifiers not allowed in signature");
if (! is_aggr_type (type, 1))