diff -x de.gmo -x fr.gmo -Nrc3p gcc-2.95.1/gcc/cp/ChangeLog gcc-2.95.2/gcc/cp/ChangeLog *** gcc-2.95.1/gcc/cp/ChangeLog Mon Aug 16 01:29:45 1999 --- gcc-2.95.2/gcc/cp/ChangeLog Sun Oct 24 23:59:12 1999 *************** *** 1,3 **** --- 1,24 ---- + Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com) + + * gcc-2.95.2 Released. + + 1999-09-06 Mark Mitchell + + * pt.c (tsubst): Back out 1999-08-06 patch. Use fold and + decl_constant_value to simplify array bounds. + + 1999-08-19 Jason Merrill + + * cp-tree.h: Declare flag_use_repository. + * pt.c (do_decl_instantiation): Don't complain about duplicate + instantiation with -frepo. + (do_type_instantiation): Likewise. + + 1999-08-14 Jason Merrill + + * decl2.c (lookup_arg_dependent): Note that we've already checked + the current namespace. + Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com) * gcc-2.95.1 Released. diff -x de.gmo -x fr.gmo -Nrc3p gcc-2.95.1/gcc/cp/cp-tree.h gcc-2.95.2/gcc/cp/cp-tree.h *** gcc-2.95.1/gcc/cp/cp-tree.h Fri Aug 6 18:31:52 1999 --- gcc-2.95.2/gcc/cp/cp-tree.h Thu Aug 19 16:29:44 1999 *************** extern int flag_guiding_decls; *** 543,548 **** --- 543,552 ---- and class qualifiers. */ extern int flag_do_squangling; + /* Nonzero means generate separate instantiation control files and juggle + them at link time. */ + extern int flag_use_repository; + /* Nonzero if we want to issue diagnostics that the standard says are not required. */ extern int flag_optional_diags; diff -x de.gmo -x fr.gmo -Nrc3p gcc-2.95.1/gcc/cp/decl2.c gcc-2.95.2/gcc/cp/decl2.c *** gcc-2.95.1/gcc/cp/decl2.c Thu Aug 12 17:52:31 1999 --- gcc-2.95.2/gcc/cp/decl2.c Thu Aug 19 16:29:45 1999 *************** lookup_arg_dependent (name, fns, args) *** 4892,4902 **** tree args; { struct arg_lookup k; k.name = name; k.functions = fns; - k.namespaces = NULL_TREE; k.classes = NULL_TREE; ! push_scratch_obstack (); arg_assoc_args (&k, args); pop_obstacks (); --- 4892,4910 ---- tree args; { struct arg_lookup k; + k.name = name; k.functions = fns; k.classes = NULL_TREE; ! ! /* Note that we've already looked at the current namespace during normal ! unqualified lookup, unless we found a decl in function scope. */ ! if (fns && ! TREE_PERMANENT (OVL_CURRENT (fns))) ! k.namespaces = NULL_TREE; ! else ! k.namespaces = scratch_tree_cons (current_decl_namespace (), ! NULL_TREE, NULL_TREE); ! push_scratch_obstack (); arg_assoc_args (&k, args); pop_obstacks (); diff -x de.gmo -x fr.gmo -Nrc3p gcc-2.95.1/gcc/cp/parse.c gcc-2.95.2/gcc/cp/parse.c *** gcc-2.95.1/gcc/cp/parse.c Mon Aug 16 02:16:39 1999 --- gcc-2.95.2/gcc/cp/parse.c Thu Aug 19 16:23:12 1999 *************** static const short yyrline[] = { 0, *** 721,738 **** 3298, 3300, 3301, 3303, 3308, 3310, 3312, 3314, 3316, 3319, 3320, 3322, 3325, 3326, 3329, 3329, 3332, 3332, 3335, 3335, 3337, 3339, 3341, 3343, 3349, 3355, 3358, 3361, 3367, 3369, ! 3371, 3375, 3377, 3378, 3379, 3381, 3384, 3391, 3396, 3402, ! 3406, 3408, 3411, 3413, 3416, 3420, 3422, 3425, 3427, 3430, ! 3447, 3453, 3461, 3463, 3465, 3469, 3472, 3473, 3481, 3485, ! 3489, 3492, 3493, 3499, 3502, 3505, 3507, 3511, 3516, 3519, ! 3529, 3534, 3535, 3542, 3545, 3548, 3550, 3553, 3555, 3565, ! 3579, 3583, 3586, 3588, 3592, 3596, 3599, 3602, 3604, 3608, ! 3610, 3617, 3624, 3627, 3631, 3635, 3639, 3645, 3649, 3654, ! 3656, 3659, 3664, 3670, 3681, 3684, 3686, 3690, 3695, 3697, ! 3704, 3707, 3709, 3711, 3717, 3722, 3725, 3727, 3729, 3731, ! 3733, 3735, 3737, 3739, 3741, 3743, 3745, 3747, 3749, 3751, ! 3753, 3755, 3757, 3759, 3761, 3763, 3765, 3767, 3769, 3771, ! 3773, 3775, 3777, 3779, 3781, 3783, 3785, 3787, 3790, 3792 }; #endif --- 721,738 ---- 3298, 3300, 3301, 3303, 3308, 3310, 3312, 3314, 3316, 3319, 3320, 3322, 3325, 3326, 3329, 3329, 3332, 3332, 3335, 3335, 3337, 3339, 3341, 3343, 3349, 3355, 3358, 3361, 3367, 3369, ! 3371, 3375, 3377, 3378, 3379, 3381, 3384, 3391, 3397, 3403, ! 3407, 3409, 3412, 3414, 3417, 3421, 3423, 3426, 3428, 3431, ! 3448, 3454, 3462, 3464, 3466, 3470, 3473, 3474, 3482, 3486, ! 3490, 3493, 3494, 3500, 3503, 3506, 3508, 3512, 3517, 3520, ! 3530, 3535, 3536, 3543, 3546, 3549, 3551, 3554, 3556, 3566, ! 3580, 3584, 3587, 3589, 3593, 3597, 3600, 3603, 3605, 3609, ! 3611, 3618, 3625, 3628, 3632, 3636, 3640, 3646, 3650, 3655, ! 3657, 3660, 3665, 3671, 3682, 3685, 3687, 3691, 3696, 3698, ! 3705, 3708, 3710, 3712, 3718, 3723, 3726, 3728, 3730, 3732, ! 3734, 3736, 3738, 3740, 3742, 3744, 3746, 3748, 3750, 3752, ! 3754, 3756, 3758, 3760, 3762, 3764, 3766, 3768, 3770, 3772, ! 3774, 3776, 3778, 3780, 3782, 3784, 3786, 3788, 3791, 3793 }; #endif *************** static const short yycheck[] = { 4, *** 3901,3907 **** 81, 82, 83, 84 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ ! #line 3 "/usr/lib/bison.simple" /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. --- 3901,3907 ---- 81, 82, 83, 84 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ ! #line 3 "/usr/cygnus/gnupro-98r2/share/bison.simple" /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. *************** __yy_memcpy (char *to, char *from, int c *** 4094,4100 **** #endif #endif ! #line 196 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. --- 4094,4100 ---- #endif #endif ! #line 196 "/usr/cygnus/gnupro-98r2/share/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. *************** case 767: *** 7724,7775 **** case 768: #line 3392 "parse.y" { expand_start_all_catch (); ; break;} case 769: ! #line 3396 "parse.y" { expand_end_all_catch (); yyval.itype = yyvsp[-3].itype; ; break;} case 770: ! #line 3404 "parse.y" { yyval.ttype = begin_try_block (); ; break;} case 771: ! #line 3406 "parse.y" { finish_try_block (yyvsp[-1].ttype); ; break;} case 772: ! #line 3408 "parse.y" { finish_handler_sequence (yyvsp[-3].ttype); ; break;} case 775: ! #line 3418 "parse.y" { yyval.ttype = begin_handler(); ; break;} case 776: ! #line 3420 "parse.y" { finish_handler_parms (yyvsp[-1].ttype); ; break;} case 777: ! #line 3422 "parse.y" { finish_handler (yyvsp[-3].ttype); ; break;} case 780: ! #line 3432 "parse.y" { expand_start_catch_block (NULL_TREE, NULL_TREE); ; break;} case 781: ! #line 3448 "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 782: ! #line 3455 "parse.y" { tree label; do_label: label = define_label (input_filename, lineno, yyvsp[-1].ttype); --- 7724,7776 ---- case 768: #line 3392 "parse.y" { + end_protect_partials (); expand_start_all_catch (); ; break;} case 769: ! #line 3397 "parse.y" { expand_end_all_catch (); yyval.itype = yyvsp[-3].itype; ; break;} case 770: ! #line 3405 "parse.y" { yyval.ttype = begin_try_block (); ; break;} case 771: ! #line 3407 "parse.y" { finish_try_block (yyvsp[-1].ttype); ; break;} case 772: ! #line 3409 "parse.y" { finish_handler_sequence (yyvsp[-3].ttype); ; break;} case 775: ! #line 3419 "parse.y" { yyval.ttype = begin_handler(); ; break;} case 776: ! #line 3421 "parse.y" { finish_handler_parms (yyvsp[-1].ttype); ; break;} case 777: ! #line 3423 "parse.y" { finish_handler (yyvsp[-3].ttype); ; break;} case 780: ! #line 3433 "parse.y" { expand_start_catch_block (NULL_TREE, NULL_TREE); ; break;} case 781: ! #line 3449 "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 782: ! #line 3456 "parse.y" { tree label; do_label: label = define_label (input_filename, lineno, yyvsp[-1].ttype); *************** case 782: *** 7778,7875 **** ; break;} case 783: ! #line 3462 "parse.y" { goto do_label; ; break;} case 784: ! #line 3464 "parse.y" { goto do_label; ; break;} case 785: ! #line 3466 "parse.y" { goto do_label; ; break;} case 786: ! #line 3471 "parse.y" { if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ; break;} case 788: ! #line 3474 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids compound statements inside for initializations"); ; break;} case 789: ! #line 3483 "parse.y" { emit_line_note (input_filename, lineno); yyval.ttype = NULL_TREE; ; break;} case 790: ! #line 3486 "parse.y" { emit_line_note (input_filename, lineno); ; break;} case 791: ! #line 3491 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 793: ! #line 3494 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 794: ! #line 3501 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 797: ! #line 3508 "parse.y" { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ; break;} case 798: ! #line 3513 "parse.y" { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ; break;} case 799: ! #line 3518 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ; break;} case 800: ! #line 3520 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; break;} case 801: ! #line 3531 "parse.y" { yyval.ttype = empty_parms(); ; break;} case 803: ! #line 3536 "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 804: ! #line 3544 "parse.y" { yyval.ttype = finish_parmlist (yyval.ttype, 0); ; break;} case 805: ! #line 3546 "parse.y" { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; break;} case 806: ! #line 3549 "parse.y" { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; break;} case 807: ! #line 3551 "parse.y" { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), 1); ; break;} case 808: ! #line 3554 "parse.y" { yyval.ttype = finish_parmlist (NULL_TREE, 1); ; break;} case 809: ! #line 3556 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right --- 7779,7876 ---- ; break;} case 783: ! #line 3463 "parse.y" { goto do_label; ; break;} case 784: ! #line 3465 "parse.y" { goto do_label; ; break;} case 785: ! #line 3467 "parse.y" { goto do_label; ; break;} case 786: ! #line 3472 "parse.y" { if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ; break;} case 788: ! #line 3475 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids compound statements inside for initializations"); ; break;} case 789: ! #line 3484 "parse.y" { emit_line_note (input_filename, lineno); yyval.ttype = NULL_TREE; ; break;} case 790: ! #line 3487 "parse.y" { emit_line_note (input_filename, lineno); ; break;} case 791: ! #line 3492 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 793: ! #line 3495 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 794: ! #line 3502 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 797: ! #line 3509 "parse.y" { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ; break;} case 798: ! #line 3514 "parse.y" { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ; break;} case 799: ! #line 3519 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ; break;} case 800: ! #line 3521 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; break;} case 801: ! #line 3532 "parse.y" { yyval.ttype = empty_parms(); ; break;} case 803: ! #line 3537 "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 804: ! #line 3545 "parse.y" { yyval.ttype = finish_parmlist (yyval.ttype, 0); ; break;} case 805: ! #line 3547 "parse.y" { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; break;} case 806: ! #line 3550 "parse.y" { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; break;} case 807: ! #line 3552 "parse.y" { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), 1); ; break;} case 808: ! #line 3555 "parse.y" { yyval.ttype = finish_parmlist (NULL_TREE, 1); ; break;} case 809: ! #line 3557 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right *************** case 809: *** 7881,7887 **** ; break;} case 810: ! #line 3566 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right --- 7882,7888 ---- ; break;} case 810: ! #line 3567 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right *************** case 810: *** 7894,7992 **** ; break;} case 811: ! #line 3581 "parse.y" { maybe_snarf_defarg (); ; break;} case 812: ! #line 3583 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 815: ! #line 3594 "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 816: ! #line 3597 "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 817: ! #line 3600 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[0].ftype); yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ; break;} case 818: ! #line 3603 "parse.y" { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 819: ! #line 3605 "parse.y" { yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ; break;} case 821: ! #line 3611 "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 822: ! #line 3621 "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 823: ! #line 3625 "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 824: ! #line 3628 "parse.y" { yyval.ftype.t = build_tree_list (build_decl_list (NULL_TREE, yyvsp[-1].ftype.t), yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 825: ! #line 3632 "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 826: ! #line 3636 "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 827: ! #line 3640 "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 828: ! #line 3647 "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 829: ! #line 3650 "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 832: ! #line 3661 "parse.y" { see_typename (); ; break;} case 833: ! #line 3666 "parse.y" { error ("type specifier omitted for parameter"); yyval.ttype = build_tree_list (integer_type_node, NULL_TREE); ; break;} case 834: ! #line 3671 "parse.y" { error ("type specifier omitted for parameter"); if (TREE_CODE (yyval.ttype) == SCOPE_REF --- 7895,7993 ---- ; break;} case 811: ! #line 3582 "parse.y" { maybe_snarf_defarg (); ; break;} case 812: ! #line 3584 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 815: ! #line 3595 "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 816: ! #line 3598 "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 817: ! #line 3601 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[0].ftype); yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ; break;} case 818: ! #line 3604 "parse.y" { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 819: ! #line 3606 "parse.y" { yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ; break;} case 821: ! #line 3612 "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 822: ! #line 3622 "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 823: ! #line 3626 "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 824: ! #line 3629 "parse.y" { yyval.ftype.t = build_tree_list (build_decl_list (NULL_TREE, yyvsp[-1].ftype.t), yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 825: ! #line 3633 "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 826: ! #line 3637 "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 827: ! #line 3641 "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 828: ! #line 3648 "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 829: ! #line 3651 "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 832: ! #line 3662 "parse.y" { see_typename (); ; break;} case 833: ! #line 3667 "parse.y" { error ("type specifier omitted for parameter"); yyval.ttype = build_tree_list (integer_type_node, NULL_TREE); ; break;} case 834: ! #line 3672 "parse.y" { error ("type specifier omitted for parameter"); if (TREE_CODE (yyval.ttype) == SCOPE_REF *************** case 834: *** 7997,8189 **** ; break;} case 835: ! #line 3683 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 836: ! #line 3685 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 837: ! #line 3687 "parse.y" { yyval.ttype = build_decl_list (NULL_TREE, NULL_TREE); ; break;} case 838: ! #line 3692 "parse.y" { yyval.ttype = build_decl_list (NULL_TREE, groktypename(yyvsp[0].ftype.t)); ; break;} case 840: ! #line 3698 "parse.y" { TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} case 841: ! #line 3706 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 842: ! #line 3708 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 843: ! #line 3710 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 844: ! #line 3712 "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 845: ! #line 3719 "parse.y" { got_scope = NULL_TREE; ; break;} case 846: ! #line 3724 "parse.y" { yyval.ttype = ansi_opname[MULT_EXPR]; ; break;} case 847: ! #line 3726 "parse.y" { yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ; break;} case 848: ! #line 3728 "parse.y" { yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ; break;} case 849: ! #line 3730 "parse.y" { yyval.ttype = ansi_opname[PLUS_EXPR]; ; break;} case 850: ! #line 3732 "parse.y" { yyval.ttype = ansi_opname[MINUS_EXPR]; ; break;} case 851: ! #line 3734 "parse.y" { yyval.ttype = ansi_opname[BIT_AND_EXPR]; ; break;} case 852: ! #line 3736 "parse.y" { yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ; break;} case 853: ! #line 3738 "parse.y" { yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ; break;} case 854: ! #line 3740 "parse.y" { yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ; break;} case 855: ! #line 3742 "parse.y" { yyval.ttype = ansi_opname[COMPOUND_EXPR]; ; break;} case 856: ! #line 3744 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 857: ! #line 3746 "parse.y" { yyval.ttype = ansi_opname[LT_EXPR]; ; break;} case 858: ! #line 3748 "parse.y" { yyval.ttype = ansi_opname[GT_EXPR]; ; break;} case 859: ! #line 3750 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 860: ! #line 3752 "parse.y" { yyval.ttype = ansi_assopname[yyvsp[0].code]; ; break;} case 861: ! #line 3754 "parse.y" { yyval.ttype = ansi_opname [MODIFY_EXPR]; ; break;} case 862: ! #line 3756 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 863: ! #line 3758 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 864: ! #line 3760 "parse.y" { yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ; break;} case 865: ! #line 3762 "parse.y" { yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ; break;} case 866: ! #line 3764 "parse.y" { yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ; break;} case 867: ! #line 3766 "parse.y" { yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ; break;} case 868: ! #line 3768 "parse.y" { yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ; break;} case 869: ! #line 3770 "parse.y" { yyval.ttype = ansi_opname[COND_EXPR]; ; break;} case 870: ! #line 3772 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 871: ! #line 3774 "parse.y" { yyval.ttype = ansi_opname[COMPONENT_REF]; ; break;} case 872: ! #line 3776 "parse.y" { yyval.ttype = ansi_opname[MEMBER_REF]; ; break;} case 873: ! #line 3778 "parse.y" { yyval.ttype = ansi_opname[CALL_EXPR]; ; break;} case 874: ! #line 3780 "parse.y" { yyval.ttype = ansi_opname[ARRAY_REF]; ; break;} case 875: ! #line 3782 "parse.y" { yyval.ttype = ansi_opname[NEW_EXPR]; ; break;} case 876: ! #line 3784 "parse.y" { yyval.ttype = ansi_opname[DELETE_EXPR]; ; break;} case 877: ! #line 3786 "parse.y" { yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ; break;} case 878: ! #line 3788 "parse.y" { yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ; break;} case 879: ! #line 3791 "parse.y" { yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} case 880: ! #line 3793 "parse.y" { yyval.ttype = ansi_opname[ERROR_MARK]; ; break;} } /* the action file gets copied in in place of this dollarsign */ ! #line 498 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; --- 7998,8190 ---- ; break;} case 835: ! #line 3684 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 836: ! #line 3686 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 837: ! #line 3688 "parse.y" { yyval.ttype = build_decl_list (NULL_TREE, NULL_TREE); ; break;} case 838: ! #line 3693 "parse.y" { yyval.ttype = build_decl_list (NULL_TREE, groktypename(yyvsp[0].ftype.t)); ; break;} case 840: ! #line 3699 "parse.y" { TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} case 841: ! #line 3707 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 842: ! #line 3709 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 843: ! #line 3711 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 844: ! #line 3713 "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 845: ! #line 3720 "parse.y" { got_scope = NULL_TREE; ; break;} case 846: ! #line 3725 "parse.y" { yyval.ttype = ansi_opname[MULT_EXPR]; ; break;} case 847: ! #line 3727 "parse.y" { yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ; break;} case 848: ! #line 3729 "parse.y" { yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ; break;} case 849: ! #line 3731 "parse.y" { yyval.ttype = ansi_opname[PLUS_EXPR]; ; break;} case 850: ! #line 3733 "parse.y" { yyval.ttype = ansi_opname[MINUS_EXPR]; ; break;} case 851: ! #line 3735 "parse.y" { yyval.ttype = ansi_opname[BIT_AND_EXPR]; ; break;} case 852: ! #line 3737 "parse.y" { yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ; break;} case 853: ! #line 3739 "parse.y" { yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ; break;} case 854: ! #line 3741 "parse.y" { yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ; break;} case 855: ! #line 3743 "parse.y" { yyval.ttype = ansi_opname[COMPOUND_EXPR]; ; break;} case 856: ! #line 3745 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 857: ! #line 3747 "parse.y" { yyval.ttype = ansi_opname[LT_EXPR]; ; break;} case 858: ! #line 3749 "parse.y" { yyval.ttype = ansi_opname[GT_EXPR]; ; break;} case 859: ! #line 3751 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 860: ! #line 3753 "parse.y" { yyval.ttype = ansi_assopname[yyvsp[0].code]; ; break;} case 861: ! #line 3755 "parse.y" { yyval.ttype = ansi_opname [MODIFY_EXPR]; ; break;} case 862: ! #line 3757 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 863: ! #line 3759 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 864: ! #line 3761 "parse.y" { yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ; break;} case 865: ! #line 3763 "parse.y" { yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ; break;} case 866: ! #line 3765 "parse.y" { yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ; break;} case 867: ! #line 3767 "parse.y" { yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ; break;} case 868: ! #line 3769 "parse.y" { yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ; break;} case 869: ! #line 3771 "parse.y" { yyval.ttype = ansi_opname[COND_EXPR]; ; break;} case 870: ! #line 3773 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 871: ! #line 3775 "parse.y" { yyval.ttype = ansi_opname[COMPONENT_REF]; ; break;} case 872: ! #line 3777 "parse.y" { yyval.ttype = ansi_opname[MEMBER_REF]; ; break;} case 873: ! #line 3779 "parse.y" { yyval.ttype = ansi_opname[CALL_EXPR]; ; break;} case 874: ! #line 3781 "parse.y" { yyval.ttype = ansi_opname[ARRAY_REF]; ; break;} case 875: ! #line 3783 "parse.y" { yyval.ttype = ansi_opname[NEW_EXPR]; ; break;} case 876: ! #line 3785 "parse.y" { yyval.ttype = ansi_opname[DELETE_EXPR]; ; break;} case 877: ! #line 3787 "parse.y" { yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ; break;} case 878: ! #line 3789 "parse.y" { yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ; break;} case 879: ! #line 3792 "parse.y" { yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} case 880: ! #line 3794 "parse.y" { yyval.ttype = ansi_opname[ERROR_MARK]; ; break;} } /* the action file gets copied in in place of this dollarsign */ ! #line 498 "/usr/cygnus/gnupro-98r2/share/bison.simple" yyvsp -= yylen; yyssp -= yylen; *************** yyerrhandle: *** 8379,8385 **** yystate = yyn; goto yynewstate; } ! #line 3796 "parse.y" #ifdef SPEW_DEBUG --- 8380,8386 ---- yystate = yyn; goto yynewstate; } ! #line 3797 "parse.y" #ifdef SPEW_DEBUG diff -x de.gmo -x fr.gmo -Nrc3p gcc-2.95.1/gcc/cp/pt.c gcc-2.95.2/gcc/cp/pt.c *** gcc-2.95.1/gcc/cp/pt.c Sun Aug 8 14:03:59 1999 --- gcc-2.95.2/gcc/cp/pt.c Tue Sep 7 00:52:06 1999 *************** tsubst (t, args, complain, in_decl) *** 6130,6135 **** --- 6130,6140 ---- if (max == error_mark_node) return error_mark_node; + /* See if we can reduce this expression to something simpler. */ + max = maybe_fold_nontype_arg (max); + if (!processing_template_decl && TREE_READONLY_DECL_P (max)) + max = decl_constant_value (max); + if (processing_template_decl /* When providing explicit arguments to a template function, but leaving some arguments for subsequent *************** tsubst (t, args, complain, in_decl) *** 6137,6144 **** not PROCESSING_TEMPLATE_DECL. */ || TREE_CODE (max) != INTEGER_CST) { ! return build_index_type (build_min ! (MINUS_EXPR, sizetype, max, integer_one_node)); } if (integer_zerop (omax)) --- 6142,6152 ---- not PROCESSING_TEMPLATE_DECL. */ || TREE_CODE (max) != INTEGER_CST) { ! tree itype = make_node (INTEGER_TYPE); ! TYPE_MIN_VALUE (itype) = size_zero_node; ! TYPE_MAX_VALUE (itype) = build_min (MINUS_EXPR, sizetype, max, ! integer_one_node); ! return itype; } if (integer_zerop (omax)) *************** do_decl_instantiation (declspecs, declar *** 8924,8930 **** We check DECL_INTERFACE_KNOWN so as not to complain when the first instantiation was `extern' and the second is not, and EXTERN_P for the opposite case. */ ! if (DECL_INTERFACE_KNOWN (result) && !extern_p) cp_pedwarn ("duplicate explicit instantiation of `%#D'", result); /* If we've already instantiated the template, just return now. */ --- 8932,8938 ---- We check DECL_INTERFACE_KNOWN so as not to complain when the first instantiation was `extern' and the second is not, and EXTERN_P for the opposite case. */ ! if (DECL_INTERFACE_KNOWN (result) && !extern_p && !flag_use_repository) cp_pedwarn ("duplicate explicit instantiation of `%#D'", result); /* If we've already instantiated the template, just return now. */ *************** do_type_instantiation (t, storage) *** 9052,9059 **** If CLASSTYPE_INTERFACE_ONLY, then the first explicit instantiation was `extern', and if EXTERN_P then the second is. Both cases are OK. */ ! if (!CLASSTYPE_INTERFACE_ONLY (t) && !extern_p) ! cp_error ("duplicate explicit instantiation of `%#T'", t); /* If we've already instantiated the template, just return now. */ if (!CLASSTYPE_INTERFACE_ONLY (t)) --- 9060,9067 ---- If CLASSTYPE_INTERFACE_ONLY, then the first explicit instantiation was `extern', and if EXTERN_P then the second is. Both cases are OK. */ ! if (!CLASSTYPE_INTERFACE_ONLY (t) && !extern_p && !flag_use_repository) ! cp_pedwarn ("duplicate explicit instantiation of `%#T'", t); /* If we've already instantiated the template, just return now. */ if (!CLASSTYPE_INTERFACE_ONLY (t)) diff -x de.gmo -x fr.gmo -Nrc3p gcc-2.95.1/libio/ChangeLog gcc-2.95.2/libio/ChangeLog *** gcc-2.95.1/libio/ChangeLog Mon Aug 16 01:29:52 1999 --- gcc-2.95.2/libio/ChangeLog Sun Oct 24 23:59:15 1999 *************** *** 1,3 **** --- 1,7 ---- + Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com) + + * gcc-2.95.2 Released. + Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com) * gcc-2.95.1 Released. diff -x de.gmo -x fr.gmo -Nrc3p gcc-2.95.1/libio/stdio/ChangeLog gcc-2.95.2/libio/stdio/ChangeLog *** gcc-2.95.1/libio/stdio/ChangeLog Mon Aug 16 01:29:53 1999 --- gcc-2.95.2/libio/stdio/ChangeLog Sun Oct 24 23:59:15 1999 *************** *** 1,3 **** --- 1,7 ---- + Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com) + + * gcc-2.95.2 Released. + Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com) * gcc-2.95.1 Released. diff -x de.gmo -x fr.gmo -Nrc3p gcc-2.95.1/libio/tests/ChangeLog gcc-2.95.2/libio/tests/ChangeLog *** gcc-2.95.1/libio/tests/ChangeLog Mon Aug 16 01:29:53 1999 --- gcc-2.95.2/libio/tests/ChangeLog Sun Oct 24 23:59:15 1999 *************** *** 1,3 **** --- 1,7 ---- + Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com) + + * gcc-2.95.2 Released. + Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com) * gcc-2.95.1 Released. diff -x de.gmo -x fr.gmo -Nrc3p gcc-2.95.1/libio/testsuite/ChangeLog gcc-2.95.2/libio/testsuite/ChangeLog *** gcc-2.95.1/libio/testsuite/ChangeLog Mon Aug 16 01:29:53 1999 --- gcc-2.95.2/libio/testsuite/ChangeLog Sun Oct 24 23:59:15 1999 *************** *** 1,3 **** --- 1,7 ---- + Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com) + + * gcc-2.95.2 Released. + Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com) * gcc-2.95.1 Released. diff -x de.gmo -x fr.gmo -Nrc3p gcc-2.95.1/libstdc++/ChangeLog gcc-2.95.2/libstdc++/ChangeLog *** gcc-2.95.1/libstdc++/ChangeLog Mon Aug 16 01:29:54 1999 --- gcc-2.95.2/libstdc++/ChangeLog Sun Oct 24 23:59:16 1999 *************** *** 1,3 **** --- 1,7 ---- + Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com) + + * gcc-2.95.2 Released. + Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com) * gcc-2.95.1 Released. diff -x de.gmo -x fr.gmo -Nrc3p gcc-2.95.1/libstdc++/stl/ChangeLog gcc-2.95.2/libstdc++/stl/ChangeLog *** gcc-2.95.1/libstdc++/stl/ChangeLog Mon Aug 16 01:29:54 1999 --- gcc-2.95.2/libstdc++/stl/ChangeLog Sun Oct 24 23:59:16 1999 *************** *** 1,3 **** --- 1,7 ---- + Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com) + + * gcc-2.95.2 Released. + Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com) * gcc-2.95.1 Released. diff -x de.gmo -x fr.gmo -Nrc3p gcc-2.95.1/libstdc++/tests/ChangeLog gcc-2.95.2/libstdc++/tests/ChangeLog *** gcc-2.95.1/libstdc++/tests/ChangeLog Mon Aug 16 01:29:54 1999 --- gcc-2.95.2/libstdc++/tests/ChangeLog Sun Oct 24 23:59:16 1999 *************** *** 1,3 **** --- 1,7 ---- + Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com) + + * gcc-2.95.2 Released. + Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com) * gcc-2.95.1 Released. diff -x de.gmo -x fr.gmo -Nrc3p gcc-2.95.1/libstdc++/testsuite/ChangeLog gcc-2.95.2/libstdc++/testsuite/ChangeLog *** gcc-2.95.1/libstdc++/testsuite/ChangeLog Mon Aug 16 01:29:54 1999 --- gcc-2.95.2/libstdc++/testsuite/ChangeLog Sun Oct 24 23:59:16 1999 *************** *** 1,3 **** --- 1,7 ---- + Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com) + + * gcc-2.95.2 Released. + Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com) * gcc-2.95.1 Released.