aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-06-14 08:06:01 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1995-06-14 08:06:01 -0400
commit866890d94a0d1cbdb9b16cf14fe6250ae96c6bcc (patch)
treea892cffe96b97f704fd78a03594ad4f1a72643d9 /gcc
parent95f29160389deb5ac6f83591949b6cab8c45f723 (diff)
downloadgcc-866890d94a0d1cbdb9b16cf14fe6250ae96c6bcc.zip
gcc-866890d94a0d1cbdb9b16cf14fe6250ae96c6bcc.tar.gz
gcc-866890d94a0d1cbdb9b16cf14fe6250ae96c6bcc.tar.bz2
(fndef, nested_function, notype_nested_function): Support attributes
after function definition. From-SVN: r9942
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c-parse.in25
1 files changed, 13 insertions, 12 deletions
diff --git a/gcc/c-parse.in b/gcc/c-parse.in
index bb4e33b..ad6a343 100644
--- a/gcc/c-parse.in
+++ b/gcc/c-parse.in
@@ -27,10 +27,10 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
written by AT&T, but I have never seen it. */
ifobjc
-%expect 48
+%expect 53
end ifobjc
ifc
-%expect 34
+%expect 39
/* These are the 23 conflicts you should get in parse.output;
the state numbers may vary if minor changes in the grammar are made.
@@ -338,8 +338,8 @@ datadef:
;
fndef:
- typed_declspecs setspecs declarator
- { if (! start_function ($1, $3, prefix_attributes, 0))
+ typed_declspecs setspecs declarator maybe_attribute
+ { if (! start_function ($1, $3, prefix_attributes, $4, 0))
YYERROR1;
reinit_parse_for_function (); }
xdecls
@@ -355,8 +355,8 @@ fndef:
prefix_attributes = TREE_PURPOSE (declspec_stack);
declspec_stack = TREE_CHAIN (declspec_stack);
resume_momentary ($2); }
- | declmods setspecs notype_declarator
- { if (! start_function ($1, $3, prefix_attributes, 0))
+ | declmods setspecs notype_declarator maybe_attribute
+ { if (! start_function ($1, $3, prefix_attributes, $4, 0))
YYERROR1;
reinit_parse_for_function (); }
xdecls
@@ -372,8 +372,9 @@ fndef:
prefix_attributes = TREE_PURPOSE (declspec_stack);
declspec_stack = TREE_CHAIN (declspec_stack);
resume_momentary ($2); }
- | setspecs notype_declarator
- { if (! start_function (NULL_TREE, $2, prefix_attributes, 0))
+ | setspecs notype_declarator maybe_attribute
+ { if (! start_function (NULL_TREE, $2,
+ prefix_attributes, $3, 0))
YYERROR1;
reinit_parse_for_function (); }
xdecls
@@ -1217,10 +1218,10 @@ end ifc
;
nested_function:
- declarator
+ declarator maybe_attribute
{ push_c_function_context ();
if (! start_function (current_declspecs, $1,
- prefix_attributes, 1))
+ prefix_attributes, $2, 1))
{
pop_c_function_context ();
YYERROR1;
@@ -1240,10 +1241,10 @@ nested_function:
;
notype_nested_function:
- notype_declarator
+ notype_declarator maybe_attribute
{ push_c_function_context ();
if (! start_function (current_declspecs, $1,
- prefix_attributes, 1))
+ prefix_attributes, $2, 1))
{
pop_c_function_context ();
YYERROR1;