Commit 440a6c2a by Jason Merrill Committed by Jason Merrill

parse.y (simple_stmt): If the condition isn't a declaration, start the…

parse.y (simple_stmt): If the condition isn't a declaration, start the controlled block after the test.

	* parse.y (simple_stmt): If the condition isn't a declaration,
	start the controlled block after the test.

From-SVN: r17967
parent 442f0a30
Fri Feb 13 13:24:32 1998 Jason Merrill <jason@yorick.cygnus.com>
* parse.y (simple_stmt): If the condition isn't a declaration,
start the controlled block after the test.
Fri Feb 13 02:26:10 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> Fri Feb 13 02:26:10 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* call.c (build_over_call): Convert builtin abs, labs and fabs to * call.c (build_over_call): Convert builtin abs, labs and fabs to
......
...@@ -673,22 +673,22 @@ static const short yyrline[] = { 0, ...@@ -673,22 +673,22 @@ static const short yyrline[] = { 0,
3420, 3422, 3424, 3426, 3428, 3436, 3438, 3439, 3440, 3443, 3420, 3422, 3424, 3426, 3428, 3436, 3438, 3439, 3440, 3443,
3451, 3456, 3463, 3465, 3470, 3472, 3475, 3489, 3492, 3495, 3451, 3456, 3463, 3465, 3470, 3472, 3475, 3489, 3492, 3495,
3504, 3516, 3527, 3547, 3557, 3560, 3568, 3580, 3583, 3586, 3504, 3516, 3527, 3547, 3557, 3560, 3568, 3580, 3583, 3586,
3589, 3605, 3608, 3619, 3620, 3624, 3639, 3658, 3670, 3684, 3589, 3605, 3608, 3619, 3620, 3624, 3639, 3667, 3679, 3693,
3698, 3711, 3730, 3748, 3767, 3775, 3796, 3814, 3827, 3828, 3707, 3720, 3739, 3757, 3785, 3793, 3814, 3832, 3845, 3846,
3831, 3831, 3834, 3834, 3837, 3837, 3843, 3849, 3852, 3857, 3849, 3849, 3852, 3852, 3855, 3855, 3861, 3867, 3870, 3875,
3864, 3873, 3882, 3891, 3899, 3912, 3914, 3918, 3920, 3923, 3882, 3891, 3900, 3909, 3917, 3930, 3932, 3936, 3938, 3941,
3930, 3933, 3941, 3957, 3968, 3980, 3982, 3985, 3995, 4005, 3948, 3951, 3959, 3975, 3986, 3998, 4000, 4003, 4013, 4023,
4016, 4018, 4020, 4023, 4040, 4046, 4054, 4056, 4058, 4062, 4034, 4036, 4038, 4041, 4058, 4064, 4072, 4074, 4076, 4080,
4065, 4066, 4074, 4078, 4082, 4085, 4086, 4092, 4095, 4098, 4083, 4084, 4092, 4096, 4100, 4103, 4104, 4110, 4113, 4116,
4100, 4104, 4109, 4112, 4122, 4127, 4128, 4136, 4142, 4147, 4118, 4122, 4127, 4130, 4140, 4145, 4146, 4154, 4160, 4165,
4151, 4156, 4160, 4164, 4168, 4173, 4184, 4198, 4202, 4205, 4169, 4174, 4178, 4182, 4186, 4191, 4202, 4216, 4220, 4223,
4207, 4211, 4215, 4218, 4221, 4223, 4227, 4229, 4236, 4243, 4225, 4229, 4233, 4236, 4239, 4241, 4245, 4247, 4254, 4261,
4246, 4249, 4253, 4257, 4263, 4267, 4272, 4274, 4277, 4282, 4264, 4267, 4271, 4275, 4281, 4285, 4290, 4292, 4295, 4300,
4288, 4299, 4302, 4304, 4308, 4313, 4315, 4322, 4325, 4327, 4306, 4317, 4320, 4322, 4326, 4331, 4333, 4340, 4343, 4345,
4329, 4335, 4340, 4343, 4345, 4347, 4349, 4351, 4353, 4355, 4347, 4353, 4358, 4361, 4363, 4365, 4367, 4369, 4371, 4373,
4357, 4359, 4361, 4363, 4365, 4367, 4369, 4371, 4373, 4375, 4375, 4377, 4379, 4381, 4383, 4385, 4387, 4389, 4391, 4393,
4377, 4379, 4381, 4383, 4385, 4387, 4389, 4391, 4393, 4395, 4395, 4397, 4399, 4401, 4403, 4405, 4407, 4409, 4411, 4413,
4397, 4399, 4401, 4403, 4405, 4408, 4410 4415, 4417, 4419, 4421, 4423, 4426, 4428
}; };
#endif #endif
...@@ -7479,10 +7479,19 @@ case 687: ...@@ -7479,10 +7479,19 @@ case 687:
emit_line_note (input_filename, lineno); emit_line_note (input_filename, lineno);
expand_exit_loop_if_false (0, yyvsp[0].ttype); expand_exit_loop_if_false (0, yyvsp[0].ttype);
} }
/* If the condition wasn't a declaration, clear out the
block we made for it and start a new one here so the
optimization in expand_end_loop will work. */
if (TREE_CODE (yyvsp[0].ttype) != VAR_DECL)
{
do_poplevel ();
do_pushlevel ();
}
; ;
break;} break;}
case 688: case 688:
#line 3659 "parse.y" #line 3668 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
{ {
...@@ -7496,7 +7505,7 @@ case 688: ...@@ -7496,7 +7505,7 @@ case 688:
; ;
break;} break;}
case 689: case 689:
#line 3671 "parse.y" #line 3680 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
{ {
...@@ -7512,7 +7521,7 @@ case 689: ...@@ -7512,7 +7521,7 @@ case 689:
; ;
break;} break;}
case 690: case 690:
#line 3685 "parse.y" #line 3694 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
{ {
...@@ -7528,7 +7537,7 @@ case 690: ...@@ -7528,7 +7537,7 @@ case 690:
; ;
break;} break;}
case 691: case 691:
#line 3699 "parse.y" #line 3708 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
TREE_OPERAND (yyvsp[-5].ttype, 1) = yyvsp[-1].ttype; TREE_OPERAND (yyvsp[-5].ttype, 1) = yyvsp[-1].ttype;
...@@ -7543,7 +7552,7 @@ case 691: ...@@ -7543,7 +7552,7 @@ case 691:
; ;
break;} break;}
case 692: case 692:
#line 3712 "parse.y" #line 3721 "parse.y"
{ if (processing_template_decl) { if (processing_template_decl)
{ {
yyval.ttype = build_min_nt (FOR_STMT, NULL_TREE, NULL_TREE, yyval.ttype = build_min_nt (FOR_STMT, NULL_TREE, NULL_TREE,
...@@ -7564,7 +7573,7 @@ case 692: ...@@ -7564,7 +7573,7 @@ case 692:
; ;
break;} break;}
case 693: case 693:
#line 3731 "parse.y" #line 3740 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
{ {
...@@ -7584,7 +7593,7 @@ case 693: ...@@ -7584,7 +7593,7 @@ case 693:
; ;
break;} break;}
case 694: case 694:
#line 3749 "parse.y" #line 3758 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
{ {
...@@ -7602,10 +7611,19 @@ case 694: ...@@ -7602,10 +7611,19 @@ case 694:
emit_line_note (input_filename, lineno); emit_line_note (input_filename, lineno);
if (yyvsp[-1].ttype) expand_exit_loop_if_false (0, yyvsp[-1].ttype); if (yyvsp[-1].ttype) expand_exit_loop_if_false (0, yyvsp[-1].ttype);
} }
/* If the condition wasn't a declaration, clear out the
block we made for it and start a new one here so the
optimization in expand_end_loop will work. */
if (yyvsp[-1].ttype == NULL_TREE || TREE_CODE (yyvsp[-1].ttype) != VAR_DECL)
{
do_poplevel ();
do_pushlevel ();
}
; ;
break;} break;}
case 695: case 695:
#line 3770 "parse.y" #line 3788 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
TREE_OPERAND (yyvsp[-9].ttype, 2) = yyvsp[-1].ttype; TREE_OPERAND (yyvsp[-9].ttype, 2) = yyvsp[-1].ttype;
...@@ -7613,7 +7631,7 @@ case 695: ...@@ -7613,7 +7631,7 @@ case 695:
; ;
break;} break;}
case 696: case 696:
#line 3776 "parse.y" #line 3794 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
{ {
...@@ -7636,7 +7654,7 @@ case 696: ...@@ -7636,7 +7654,7 @@ case 696:
finish_stmt (); ; finish_stmt (); ;
break;} break;}
case 697: case 697:
#line 3797 "parse.y" #line 3815 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
{ {
...@@ -7655,7 +7673,7 @@ case 697: ...@@ -7655,7 +7673,7 @@ case 697:
; ;
break;} break;}
case 698: case 698:
#line 3814 "parse.y" #line 3832 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
{ {
...@@ -7670,23 +7688,23 @@ case 698: ...@@ -7670,23 +7688,23 @@ case 698:
; ;
break;} break;}
case 699: case 699:
#line 3827 "parse.y" #line 3845 "parse.y"
{ finish_stmt (); ; { finish_stmt (); ;
break;} break;}
case 700: case 700:
#line 3829 "parse.y" #line 3847 "parse.y"
{ do_case (yyvsp[-1].ttype, NULL_TREE); ; { do_case (yyvsp[-1].ttype, NULL_TREE); ;
break;} break;}
case 702: case 702:
#line 3832 "parse.y" #line 3850 "parse.y"
{ do_case (yyvsp[-3].ttype, yyvsp[-1].ttype); ; { do_case (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;} break;}
case 704: case 704:
#line 3835 "parse.y" #line 3853 "parse.y"
{ do_case (NULL_TREE, NULL_TREE); ; { do_case (NULL_TREE, NULL_TREE); ;
break;} break;}
case 706: case 706:
#line 3838 "parse.y" #line 3856 "parse.y"
{ emit_line_note (input_filename, lineno); { emit_line_note (input_filename, lineno);
if (processing_template_decl) if (processing_template_decl)
add_tree (build_min_nt (BREAK_STMT)); add_tree (build_min_nt (BREAK_STMT));
...@@ -7694,7 +7712,7 @@ case 706: ...@@ -7694,7 +7712,7 @@ case 706:
error ("break statement not within loop or switch"); ; error ("break statement not within loop or switch"); ;
break;} break;}
case 707: case 707:
#line 3844 "parse.y" #line 3862 "parse.y"
{ emit_line_note (input_filename, lineno); { emit_line_note (input_filename, lineno);
if (processing_template_decl) if (processing_template_decl)
add_tree (build_min_nt (CONTINUE_STMT)); add_tree (build_min_nt (CONTINUE_STMT));
...@@ -7702,19 +7720,19 @@ case 707: ...@@ -7702,19 +7720,19 @@ case 707:
error ("continue statement not within a loop"); ; error ("continue statement not within a loop"); ;
break;} break;}
case 708: case 708:
#line 3850 "parse.y" #line 3868 "parse.y"
{ emit_line_note (input_filename, lineno); { emit_line_note (input_filename, lineno);
c_expand_return (NULL_TREE); ; c_expand_return (NULL_TREE); ;
break;} break;}
case 709: case 709:
#line 3853 "parse.y" #line 3871 "parse.y"
{ emit_line_note (input_filename, lineno); { emit_line_note (input_filename, lineno);
c_expand_return (yyvsp[-1].ttype); c_expand_return (yyvsp[-1].ttype);
finish_stmt (); finish_stmt ();
; ;
break;} break;}
case 710: case 710:
#line 3858 "parse.y" #line 3876 "parse.y"
{ if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype); { if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
emit_line_note (input_filename, lineno); emit_line_note (input_filename, lineno);
expand_asm (yyvsp[-2].ttype); expand_asm (yyvsp[-2].ttype);
...@@ -7722,7 +7740,7 @@ case 710: ...@@ -7722,7 +7740,7 @@ case 710:
; ;
break;} break;}
case 711: case 711:
#line 3865 "parse.y" #line 3883 "parse.y"
{ if (TREE_CHAIN (yyvsp[-4].ttype)) yyvsp[-4].ttype = combine_strings (yyvsp[-4].ttype); { if (TREE_CHAIN (yyvsp[-4].ttype)) yyvsp[-4].ttype = combine_strings (yyvsp[-4].ttype);
emit_line_note (input_filename, lineno); emit_line_note (input_filename, lineno);
c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE, c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
...@@ -7732,7 +7750,7 @@ case 711: ...@@ -7732,7 +7750,7 @@ case 711:
; ;
break;} break;}
case 712: case 712:
#line 3874 "parse.y" #line 3892 "parse.y"
{ if (TREE_CHAIN (yyvsp[-6].ttype)) yyvsp[-6].ttype = combine_strings (yyvsp[-6].ttype); { if (TREE_CHAIN (yyvsp[-6].ttype)) yyvsp[-6].ttype = combine_strings (yyvsp[-6].ttype);
emit_line_note (input_filename, lineno); emit_line_note (input_filename, lineno);
c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
...@@ -7742,7 +7760,7 @@ case 712: ...@@ -7742,7 +7760,7 @@ case 712:
; ;
break;} break;}
case 713: case 713:
#line 3884 "parse.y" #line 3902 "parse.y"
{ if (TREE_CHAIN (yyvsp[-8].ttype)) yyvsp[-8].ttype = combine_strings (yyvsp[-8].ttype); { if (TREE_CHAIN (yyvsp[-8].ttype)) yyvsp[-8].ttype = combine_strings (yyvsp[-8].ttype);
emit_line_note (input_filename, lineno); emit_line_note (input_filename, lineno);
c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
...@@ -7752,7 +7770,7 @@ case 713: ...@@ -7752,7 +7770,7 @@ case 713:
; ;
break;} break;}
case 714: case 714:
#line 3892 "parse.y" #line 3910 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
add_tree (build_min_nt (GOTO_STMT, yyvsp[-1].ttype)); add_tree (build_min_nt (GOTO_STMT, yyvsp[-1].ttype));
...@@ -7762,7 +7780,7 @@ case 714: ...@@ -7762,7 +7780,7 @@ case 714:
; ;
break;} break;}
case 715: case 715:
#line 3900 "parse.y" #line 3918 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
add_tree (build_min_nt (GOTO_STMT, yyvsp[-1].ttype)); add_tree (build_min_nt (GOTO_STMT, yyvsp[-1].ttype));
...@@ -7777,21 +7795,21 @@ case 715: ...@@ -7777,21 +7795,21 @@ case 715:
; ;
break;} break;}
case 716: case 716:
#line 3913 "parse.y" #line 3931 "parse.y"
{ finish_stmt (); ; { finish_stmt (); ;
break;} break;}
case 717: case 717:
#line 3915 "parse.y" #line 3933 "parse.y"
{ error ("label must be followed by statement"); { error ("label must be followed by statement");
yyungetc ('}', 0); yyungetc ('}', 0);
finish_stmt (); ; finish_stmt (); ;
break;} break;}
case 718: case 718:
#line 3919 "parse.y" #line 3937 "parse.y"
{ finish_stmt (); ; { finish_stmt (); ;
break;} break;}
case 720: case 720:
#line 3925 "parse.y" #line 3943 "parse.y"
{ {
if (! current_function_parms_stored) if (! current_function_parms_stored)
store_parm_decls (); store_parm_decls ();
...@@ -7799,11 +7817,11 @@ case 720: ...@@ -7799,11 +7817,11 @@ case 720:
; ;
break;} break;}
case 721: case 721:
#line 3931 "parse.y" #line 3949 "parse.y"
{ expand_start_all_catch (); ; { expand_start_all_catch (); ;
break;} break;}
case 722: case 722:
#line 3933 "parse.y" #line 3951 "parse.y"
{ {
int nested = (hack_decl_function_context int nested = (hack_decl_function_context
(current_function_decl) != NULL_TREE); (current_function_decl) != NULL_TREE);
...@@ -7812,7 +7830,7 @@ case 722: ...@@ -7812,7 +7830,7 @@ case 722:
; ;
break;} break;}
case 723: case 723:
#line 3943 "parse.y" #line 3961 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
{ {
...@@ -7828,7 +7846,7 @@ case 723: ...@@ -7828,7 +7846,7 @@ case 723:
; ;
break;} break;}
case 724: case 724:
#line 3957 "parse.y" #line 3975 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
{ {
...@@ -7841,7 +7859,7 @@ case 724: ...@@ -7841,7 +7859,7 @@ case 724:
; ;
break;} break;}
case 725: case 725:
#line 3968 "parse.y" #line 3986 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
{ {
...@@ -7854,7 +7872,7 @@ case 725: ...@@ -7854,7 +7872,7 @@ case 725:
; ;
break;} break;}
case 728: case 728:
#line 3987 "parse.y" #line 4005 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
{ {
...@@ -7865,7 +7883,7 @@ case 728: ...@@ -7865,7 +7883,7 @@ case 728:
; ;
break;} break;}
case 729: case 729:
#line 3996 "parse.y" #line 4014 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
{ {
...@@ -7876,7 +7894,7 @@ case 729: ...@@ -7876,7 +7894,7 @@ case 729:
; ;
break;} break;}
case 730: case 730:
#line 4005 "parse.y" #line 4023 "parse.y"
{ {
if (processing_template_decl) if (processing_template_decl)
{ {
...@@ -7889,17 +7907,17 @@ case 730: ...@@ -7889,17 +7907,17 @@ case 730:
; ;
break;} break;}
case 734: case 734:
#line 4025 "parse.y" #line 4043 "parse.y"
{ expand_start_catch_block (NULL_TREE, NULL_TREE); ; { expand_start_catch_block (NULL_TREE, NULL_TREE); ;
break;} break;}
case 735: case 735:
#line 4041 "parse.y" #line 4059 "parse.y"
{ check_for_new_type ("inside exception declarations", yyvsp[-1].ftype); { check_for_new_type ("inside exception declarations", yyvsp[-1].ftype);
expand_start_catch_block (TREE_PURPOSE (yyvsp[-1].ftype.t), expand_start_catch_block (TREE_PURPOSE (yyvsp[-1].ftype.t),
TREE_VALUE (yyvsp[-1].ftype.t)); ; TREE_VALUE (yyvsp[-1].ftype.t)); ;
break;} break;}
case 736: case 736:
#line 4048 "parse.y" #line 4066 "parse.y"
{ tree label; { tree label;
do_label: do_label:
label = define_label (input_filename, lineno, yyvsp[-1].ttype); label = define_label (input_filename, lineno, yyvsp[-1].ttype);
...@@ -7908,129 +7926,129 @@ case 736: ...@@ -7908,129 +7926,129 @@ case 736:
; ;
break;} break;}
case 737: case 737:
#line 4055 "parse.y" #line 4073 "parse.y"
{ goto do_label; ; { goto do_label; ;
break;} break;}
case 738: case 738:
#line 4057 "parse.y" #line 4075 "parse.y"
{ goto do_label; ; { goto do_label; ;
break;} break;}
case 739: case 739:
#line 4059 "parse.y" #line 4077 "parse.y"
{ goto do_label; ; { goto do_label; ;
break;} break;}
case 740: case 740:
#line 4064 "parse.y" #line 4082 "parse.y"
{ if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ; { if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ;
break;} break;}
case 742: case 742:
#line 4067 "parse.y" #line 4085 "parse.y"
{ if (pedantic) { if (pedantic)
pedwarn ("ANSI C++ forbids compound statements inside for initializations"); pedwarn ("ANSI C++ forbids compound statements inside for initializations");
; ;
break;} break;}
case 743: case 743:
#line 4076 "parse.y" #line 4094 "parse.y"
{ emit_line_note (input_filename, lineno); { emit_line_note (input_filename, lineno);
yyval.ttype = NULL_TREE; ; yyval.ttype = NULL_TREE; ;
break;} break;}
case 744: case 744:
#line 4079 "parse.y" #line 4097 "parse.y"
{ emit_line_note (input_filename, lineno); ; { emit_line_note (input_filename, lineno); ;
break;} break;}
case 745: case 745:
#line 4084 "parse.y" #line 4102 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 747: case 747:
#line 4087 "parse.y" #line 4105 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 748: case 748:
#line 4094 "parse.y" #line 4112 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 751: case 751:
#line 4101 "parse.y" #line 4119 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ; { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
break;} break;}
case 752: case 752:
#line 4106 "parse.y" #line 4124 "parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ; { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ;
break;} break;}
case 753: case 753:
#line 4111 "parse.y" #line 4129 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ; { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ;
break;} break;}
case 754: case 754:
#line 4113 "parse.y" #line 4131 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
break;} break;}
case 755: case 755:
#line 4124 "parse.y" #line 4142 "parse.y"
{ {
yyval.ttype = empty_parms(); yyval.ttype = empty_parms();
; ;
break;} break;}
case 757: case 757:
#line 4129 "parse.y" #line 4147 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ftype.t, void_list_node); { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ftype.t, void_list_node);
TREE_PARMLIST (yyval.ttype) = 1; TREE_PARMLIST (yyval.ttype) = 1;
check_for_new_type ("inside parameter list", yyvsp[0].ftype); ; check_for_new_type ("inside parameter list", yyvsp[0].ftype); ;
break;} break;}
case 758: case 758:
#line 4138 "parse.y" #line 4156 "parse.y"
{ {
yyval.ttype = chainon (yyval.ttype, void_list_node); yyval.ttype = chainon (yyval.ttype, void_list_node);
TREE_PARMLIST (yyval.ttype) = 1; TREE_PARMLIST (yyval.ttype) = 1;
; ;
break;} break;}
case 759: case 759:
#line 4143 "parse.y" #line 4161 "parse.y"
{ {
TREE_PARMLIST (yyval.ttype) = 1; TREE_PARMLIST (yyval.ttype) = 1;
; ;
break;} break;}
case 760: case 760:
#line 4148 "parse.y" #line 4166 "parse.y"
{ {
TREE_PARMLIST (yyval.ttype) = 1; TREE_PARMLIST (yyval.ttype) = 1;
; ;
break;} break;}
case 761: case 761:
#line 4152 "parse.y" #line 4170 "parse.y"
{ {
yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t);
TREE_PARMLIST (yyval.ttype) = 1; TREE_PARMLIST (yyval.ttype) = 1;
; ;
break;} break;}
case 762: case 762:
#line 4157 "parse.y" #line 4175 "parse.y"
{ {
yyval.ttype = NULL_TREE; yyval.ttype = NULL_TREE;
; ;
break;} break;}
case 763: case 763:
#line 4161 "parse.y" #line 4179 "parse.y"
{ {
TREE_PARMLIST (yyval.ttype) = 1; TREE_PARMLIST (yyval.ttype) = 1;
; ;
break;} break;}
case 764: case 764:
#line 4165 "parse.y" #line 4183 "parse.y"
{ {
TREE_PARMLIST (yyval.ttype) = 1; TREE_PARMLIST (yyval.ttype) = 1;
; ;
break;} break;}
case 765: case 765:
#line 4169 "parse.y" #line 4187 "parse.y"
{ {
yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t);
TREE_PARMLIST (yyval.ttype) = 1; TREE_PARMLIST (yyval.ttype) = 1;
; ;
break;} break;}
case 766: case 766:
#line 4174 "parse.y" #line 4192 "parse.y"
{ {
/* This helps us recover from really nasty /* This helps us recover from really nasty
parse errors, for example, a missing right parse errors, for example, a missing right
...@@ -8043,7 +8061,7 @@ case 766: ...@@ -8043,7 +8061,7 @@ case 766:
; ;
break;} break;}
case 767: case 767:
#line 4185 "parse.y" #line 4203 "parse.y"
{ {
/* This helps us recover from really nasty /* This helps us recover from really nasty
parse errors, for example, a missing right parse errors, for example, a missing right
...@@ -8056,98 +8074,98 @@ case 767: ...@@ -8056,98 +8074,98 @@ case 767:
; ;
break;} break;}
case 768: case 768:
#line 4200 "parse.y" #line 4218 "parse.y"
{ maybe_snarf_defarg (); ; { maybe_snarf_defarg (); ;
break;} break;}
case 769: case 769:
#line 4202 "parse.y" #line 4220 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ; { yyval.ttype = yyvsp[0].ttype; ;
break;} break;}
case 772: case 772:
#line 4213 "parse.y" #line 4231 "parse.y"
{ check_for_new_type ("in a parameter list", yyvsp[0].ftype); { check_for_new_type ("in a parameter list", yyvsp[0].ftype);
yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ; yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ;
break;} break;}
case 773: case 773:
#line 4216 "parse.y" #line 4234 "parse.y"
{ check_for_new_type ("in a parameter list", yyvsp[-1].ftype); { check_for_new_type ("in a parameter list", yyvsp[-1].ftype);
yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); ; yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); ;
break;} break;}
case 774: case 774:
#line 4219 "parse.y" #line 4237 "parse.y"
{ check_for_new_type ("in a parameter list", yyvsp[0].ftype); { check_for_new_type ("in a parameter list", yyvsp[0].ftype);
yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ; yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ;
break;} break;}
case 775: case 775:
#line 4222 "parse.y" #line 4240 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
break;} break;}
case 776: case 776:
#line 4224 "parse.y" #line 4242 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ; { yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
break;} break;}
case 778: case 778:
#line 4230 "parse.y" #line 4248 "parse.y"
{ check_for_new_type ("in a parameter list", yyvsp[-1].ftype); { check_for_new_type ("in a parameter list", yyvsp[-1].ftype);
yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); ; yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); ;
break;} break;}
case 779: case 779:
#line 4240 "parse.y" #line 4258 "parse.y"
{ tree specs = strip_attrs (yyvsp[-1].ftype.t); { tree specs = strip_attrs (yyvsp[-1].ftype.t);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag;
yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); ; yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); ;
break;} break;}
case 780: case 780:
#line 4244 "parse.y" #line 4262 "parse.y"
{ yyval.ftype.t = build_tree_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); { yyval.ftype.t = build_tree_list (yyvsp[-1].ftype.t, yyvsp[0].ttype);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;} break;}
case 781: case 781:
#line 4247 "parse.y" #line 4265 "parse.y"
{ yyval.ftype.t = build_tree_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype); { 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; ; yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;} break;}
case 782: case 782:
#line 4250 "parse.y" #line 4268 "parse.y"
{ tree specs = strip_attrs (yyvsp[-1].ftype.t); { tree specs = strip_attrs (yyvsp[-1].ftype.t);
yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;} break;}
case 783: case 783:
#line 4254 "parse.y" #line 4272 "parse.y"
{ tree specs = strip_attrs (yyvsp[0].ftype.t); { tree specs = strip_attrs (yyvsp[0].ftype.t);
yyval.ftype.t = build_tree_list (specs, NULL_TREE); yyval.ftype.t = build_tree_list (specs, NULL_TREE);
yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
break;} break;}
case 784: case 784:
#line 4258 "parse.y" #line 4276 "parse.y"
{ tree specs = strip_attrs (yyvsp[-1].ttype); { tree specs = strip_attrs (yyvsp[-1].ttype);
yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype);
yyval.ftype.new_type_flag = 0; ; yyval.ftype.new_type_flag = 0; ;
break;} break;}
case 785: case 785:
#line 4265 "parse.y" #line 4283 "parse.y"
{ yyval.ftype.t = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); { yyval.ftype.t = build_tree_list (NULL_TREE, yyvsp[0].ftype.t);
yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
break;} break;}
case 786: case 786:
#line 4268 "parse.y" #line 4286 "parse.y"
{ yyval.ftype.t = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); { yyval.ftype.t = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;} break;}
case 789: case 789:
#line 4279 "parse.y" #line 4297 "parse.y"
{ see_typename (); ; { see_typename (); ;
break;} break;}
case 790: case 790:
#line 4284 "parse.y" #line 4302 "parse.y"
{ {
error ("type specifier omitted for parameter"); error ("type specifier omitted for parameter");
yyval.ttype = build_tree_list (integer_type_node, NULL_TREE); yyval.ttype = build_tree_list (integer_type_node, NULL_TREE);
; ;
break;} break;}
case 791: case 791:
#line 4289 "parse.y" #line 4307 "parse.y"
{ {
error ("type specifier omitted for parameter"); error ("type specifier omitted for parameter");
if (TREE_CODE (yyval.ttype) == SCOPE_REF if (TREE_CODE (yyval.ttype) == SCOPE_REF
...@@ -8158,188 +8176,188 @@ case 791: ...@@ -8158,188 +8176,188 @@ case 791:
; ;
break;} break;}
case 792: case 792:
#line 4301 "parse.y" #line 4319 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 793: case 793:
#line 4303 "parse.y" #line 4321 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ; { yyval.ttype = yyvsp[-1].ttype; ;
break;} break;}
case 794: case 794:
#line 4305 "parse.y" #line 4323 "parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, NULL_TREE); ; { yyval.ttype = build_decl_list (NULL_TREE, NULL_TREE); ;
break;} break;}
case 795: case 795:
#line 4310 "parse.y" #line 4328 "parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, groktypename(yyvsp[0].ftype.t)); ; { yyval.ttype = build_decl_list (NULL_TREE, groktypename(yyvsp[0].ftype.t)); ;
break;} break;}
case 797: case 797:
#line 4316 "parse.y" #line 4334 "parse.y"
{ {
TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype;
yyval.ttype = yyvsp[0].ttype; yyval.ttype = yyvsp[0].ttype;
; ;
break;} break;}
case 798: case 798:
#line 4324 "parse.y" #line 4342 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 799: case 799:
#line 4326 "parse.y" #line 4344 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;} break;}
case 800: case 800:
#line 4328 "parse.y" #line 4346 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;} break;}
case 801: case 801:
#line 4330 "parse.y" #line 4348 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
; ;
break;} break;}
case 802: case 802:
#line 4337 "parse.y" #line 4355 "parse.y"
{ got_scope = NULL_TREE; ; { got_scope = NULL_TREE; ;
break;} break;}
case 803: case 803:
#line 4342 "parse.y" #line 4360 "parse.y"
{ yyval.ttype = ansi_opname[MULT_EXPR]; ; { yyval.ttype = ansi_opname[MULT_EXPR]; ;
break;} break;}
case 804: case 804:
#line 4344 "parse.y" #line 4362 "parse.y"
{ yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ; { yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ;
break;} break;}
case 805: case 805:
#line 4346 "parse.y" #line 4364 "parse.y"
{ yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ; { yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ;
break;} break;}
case 806: case 806:
#line 4348 "parse.y" #line 4366 "parse.y"
{ yyval.ttype = ansi_opname[PLUS_EXPR]; ; { yyval.ttype = ansi_opname[PLUS_EXPR]; ;
break;} break;}
case 807: case 807:
#line 4350 "parse.y" #line 4368 "parse.y"
{ yyval.ttype = ansi_opname[MINUS_EXPR]; ; { yyval.ttype = ansi_opname[MINUS_EXPR]; ;
break;} break;}
case 808: case 808:
#line 4352 "parse.y" #line 4370 "parse.y"
{ yyval.ttype = ansi_opname[BIT_AND_EXPR]; ; { yyval.ttype = ansi_opname[BIT_AND_EXPR]; ;
break;} break;}
case 809: case 809:
#line 4354 "parse.y" #line 4372 "parse.y"
{ yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ; { yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ;
break;} break;}
case 810: case 810:
#line 4356 "parse.y" #line 4374 "parse.y"
{ yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ; { yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ;
break;} break;}
case 811: case 811:
#line 4358 "parse.y" #line 4376 "parse.y"
{ yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ; { yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ;
break;} break;}
case 812: case 812:
#line 4360 "parse.y" #line 4378 "parse.y"
{ yyval.ttype = ansi_opname[COMPOUND_EXPR]; ; { yyval.ttype = ansi_opname[COMPOUND_EXPR]; ;
break;} break;}
case 813: case 813:
#line 4362 "parse.y" #line 4380 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
break;} break;}
case 814: case 814:
#line 4364 "parse.y" #line 4382 "parse.y"
{ yyval.ttype = ansi_opname[LT_EXPR]; ; { yyval.ttype = ansi_opname[LT_EXPR]; ;
break;} break;}
case 815: case 815:
#line 4366 "parse.y" #line 4384 "parse.y"
{ yyval.ttype = ansi_opname[GT_EXPR]; ; { yyval.ttype = ansi_opname[GT_EXPR]; ;
break;} break;}
case 816: case 816:
#line 4368 "parse.y" #line 4386 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
break;} break;}
case 817: case 817:
#line 4370 "parse.y" #line 4388 "parse.y"
{ yyval.ttype = ansi_assopname[yyvsp[0].code]; ; { yyval.ttype = ansi_assopname[yyvsp[0].code]; ;
break;} break;}
case 818: case 818:
#line 4372 "parse.y" #line 4390 "parse.y"
{ yyval.ttype = ansi_opname [MODIFY_EXPR]; ; { yyval.ttype = ansi_opname [MODIFY_EXPR]; ;
break;} break;}
case 819: case 819:
#line 4374 "parse.y" #line 4392 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
break;} break;}
case 820: case 820:
#line 4376 "parse.y" #line 4394 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
break;} break;}
case 821: case 821:
#line 4378 "parse.y" #line 4396 "parse.y"
{ yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ; { yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ;
break;} break;}
case 822: case 822:
#line 4380 "parse.y" #line 4398 "parse.y"
{ yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ; { yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ;
break;} break;}
case 823: case 823:
#line 4382 "parse.y" #line 4400 "parse.y"
{ yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ; { yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ;
break;} break;}
case 824: case 824:
#line 4384 "parse.y" #line 4402 "parse.y"
{ yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ; { yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ;
break;} break;}
case 825: case 825:
#line 4386 "parse.y" #line 4404 "parse.y"
{ yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ; { yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ;
break;} break;}
case 826: case 826:
#line 4388 "parse.y" #line 4406 "parse.y"
{ yyval.ttype = ansi_opname[COND_EXPR]; ; { yyval.ttype = ansi_opname[COND_EXPR]; ;
break;} break;}
case 827: case 827:
#line 4390 "parse.y" #line 4408 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
break;} break;}
case 828: case 828:
#line 4392 "parse.y" #line 4410 "parse.y"
{ yyval.ttype = ansi_opname[COMPONENT_REF]; ; { yyval.ttype = ansi_opname[COMPONENT_REF]; ;
break;} break;}
case 829: case 829:
#line 4394 "parse.y" #line 4412 "parse.y"
{ yyval.ttype = ansi_opname[MEMBER_REF]; ; { yyval.ttype = ansi_opname[MEMBER_REF]; ;
break;} break;}
case 830: case 830:
#line 4396 "parse.y" #line 4414 "parse.y"
{ yyval.ttype = ansi_opname[CALL_EXPR]; ; { yyval.ttype = ansi_opname[CALL_EXPR]; ;
break;} break;}
case 831: case 831:
#line 4398 "parse.y" #line 4416 "parse.y"
{ yyval.ttype = ansi_opname[ARRAY_REF]; ; { yyval.ttype = ansi_opname[ARRAY_REF]; ;
break;} break;}
case 832: case 832:
#line 4400 "parse.y" #line 4418 "parse.y"
{ yyval.ttype = ansi_opname[NEW_EXPR]; ; { yyval.ttype = ansi_opname[NEW_EXPR]; ;
break;} break;}
case 833: case 833:
#line 4402 "parse.y" #line 4420 "parse.y"
{ yyval.ttype = ansi_opname[DELETE_EXPR]; ; { yyval.ttype = ansi_opname[DELETE_EXPR]; ;
break;} break;}
case 834: case 834:
#line 4404 "parse.y" #line 4422 "parse.y"
{ yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ; { yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ;
break;} break;}
case 835: case 835:
#line 4406 "parse.y" #line 4424 "parse.y"
{ yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ; { yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ;
break;} break;}
case 836: case 836:
#line 4409 "parse.y" #line 4427 "parse.y"
{ yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; { yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;} break;}
case 837: case 837:
#line 4411 "parse.y" #line 4429 "parse.y"
{ yyval.ttype = ansi_opname[ERROR_MARK]; ; { yyval.ttype = ansi_opname[ERROR_MARK]; ;
break;} break;}
} }
...@@ -8540,7 +8558,7 @@ yyerrhandle: ...@@ -8540,7 +8558,7 @@ yyerrhandle:
yystate = yyn; yystate = yyn;
goto yynewstate; goto yynewstate;
} }
#line 4414 "parse.y" #line 4432 "parse.y"
#ifdef SPEW_DEBUG #ifdef SPEW_DEBUG
......
...@@ -3654,6 +3654,15 @@ simple_stmt: ...@@ -3654,6 +3654,15 @@ simple_stmt:
emit_line_note (input_filename, lineno); emit_line_note (input_filename, lineno);
expand_exit_loop_if_false (0, $4); expand_exit_loop_if_false (0, $4);
} }
/* If the condition wasn't a declaration, clear out the
block we made for it and start a new one here so the
optimization in expand_end_loop will work. */
if (TREE_CODE ($4) != VAR_DECL)
{
do_poplevel ();
do_pushlevel ();
}
} }
already_scoped_stmt .poplevel already_scoped_stmt .poplevel
{ {
...@@ -3763,6 +3772,15 @@ simple_stmt: ...@@ -3763,6 +3772,15 @@ simple_stmt:
emit_line_note (input_filename, lineno); emit_line_note (input_filename, lineno);
if ($7) expand_exit_loop_if_false (0, $7); if ($7) expand_exit_loop_if_false (0, $7);
} }
/* If the condition wasn't a declaration, clear out the
block we made for it and start a new one here so the
optimization in expand_end_loop will work. */
if ($7 == NULL_TREE || TREE_CODE ($7) != VAR_DECL)
{
do_poplevel ();
do_pushlevel ();
}
} }
xexpr ')' xexpr ')'
/* Don't let the tree nodes for $10 be discarded /* Don't let the tree nodes for $10 be discarded
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment