From c0a4369a237ae3b0cdabff81a2b83fdf3308b5b2 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 24 Oct 2001 16:46:44 +0200 Subject: [PATCH] c-decl.c (finish_decl): Don't add DECL_STMTs for nested function prototypes. * c-decl.c (finish_decl): Don't add DECL_STMTs for nested function prototypes. * gcc.c-torture/compile/20011023-1.c: New test. From-SVN: r46463 --- gcc/ChangeLog | 5 +++++ gcc/c-decl.c | 3 ++- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.c-torture/compile/20011023-1.c | 14 ++++++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.c-torture/compile/20011023-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e58637f965b..640da380a70 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-10-24 Jakub Jelinek + + * c-decl.c (finish_decl): Don't add DECL_STMTs for nested function + prototypes. + 2001-10-23 Stan Shebs * config/rs6000/x-darwin: Use -no-cpp-precomp instead of diff --git a/gcc/c-decl.c b/gcc/c-decl.c index ad724f5de48..a5dbd928a01 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -3735,7 +3735,8 @@ finish_decl (decl, init, asmspec_tree) SET_DECL_ASSEMBLER_NAME (decl, get_identifier (asmspec)); } - add_decl_stmt (decl); + if (TREE_CODE (decl) != FUNCTION_DECL) + add_decl_stmt (decl); } if (DECL_CONTEXT (decl) != 0) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 230b9dc1072..106e21ab979 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2001-10-24 Jakub Jelinek + + * gcc.c-torture/compile/20011023-1.c: New test. + 2001-10-23 Geoffrey Keating * lib/g77.exp: Rewrite based on lib/g++.exp. diff --git a/gcc/testsuite/gcc.c-torture/compile/20011023-1.c b/gcc/testsuite/gcc.c-torture/compile/20011023-1.c new file mode 100644 index 00000000000..eca1adf17ca --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20011023-1.c @@ -0,0 +1,14 @@ +/* Test whether tree inlining works with prototyped nested functions. */ + +extern void foo (char *x); +void bar (void); +void bar (void) +{ + auto void baz (void); + void baz (void) + { + char tmp[2]; + foo (tmp); + } + baz (); +}