Commit 494fc9d0 authored by jsm28's avatar jsm28
Browse files

PR c/20368

	* c-decl.c (start_function): Check for old_decl being
	error_mark_node.

testsuite:
	* gcc.dg/pr20368-1.c, gcc.dg/pr20368-2.c, gcc.dg/pr20368-3.c: New
	tests.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97270 138bc75d-0d04-0410-961f-82ee72b054a4
parent 4bf029b0
2005-03-30 Joseph S. Myers <joseph@codesourcery.com>
PR c/20368
* c-decl.c (start_function): Check for old_decl being
error_mark_node.
2005-03-30 Ian Lance Taylor <ian@airs.com>
* final.c (final): Remove prescan parameter. Change all callers.
......
......@@ -5691,11 +5691,13 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator,
/* Optionally warn of old-fashioned def with no previous prototype. */
if (warn_strict_prototypes
&& old_decl != error_mark_node
&& TYPE_ARG_TYPES (TREE_TYPE (decl1)) == 0
&& C_DECL_ISNT_PROTOTYPE (old_decl))
warning ("function declaration isn%'t a prototype");
/* Optionally warn of any global def with no previous prototype. */
else if (warn_missing_prototypes
&& old_decl != error_mark_node
&& TREE_PUBLIC (decl1)
&& !MAIN_NAME_P (DECL_NAME (decl1))
&& C_DECL_ISNT_PROTOTYPE (old_decl))
......@@ -5703,7 +5705,9 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator,
/* Optionally warn of any def with no previous prototype
if the function has already been used. */
else if (warn_missing_prototypes
&& old_decl != 0 && TREE_USED (old_decl)
&& old_decl != 0
&& old_decl != error_mark_node
&& TREE_USED (old_decl)
&& TYPE_ARG_TYPES (TREE_TYPE (old_decl)) == 0)
warning ("%J%qD was used with no prototype before its definition",
decl1, decl1);
......@@ -5716,7 +5720,9 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator,
/* Optionally warn of any def with no previous declaration
if the function has already been used. */
else if (warn_missing_declarations
&& old_decl != 0 && TREE_USED (old_decl)
&& old_decl != 0
&& old_decl != error_mark_node
&& TREE_USED (old_decl)
&& C_DECL_IMPLICIT (old_decl))
warning ("%J%qD was used with no declaration before its definition",
decl1, decl1);
......
2005-03-30 Joseph S. Myers <joseph@codesourcery.com>
PR c/20368
* gcc.dg/pr20368-1.c, gcc.dg/pr20368-2.c, gcc.dg/pr20368-3.c: New
tests.
2005-03-30 Alan Modra <amodra@bigpond.net.au>
 
* gcc.c-torture/compile/pr20203.c: New test.
......
/* ICE with -Wstrict-prototypes and typeof an undeclared function.
Bug 20368. */
/* { dg-do compile } */
/* { dg-options "-Wstrict-prototypes" } */
extern __typeof (f) g; /* { dg-error "error: 'f' undeclared here \\(not in a function\\)" } */
int
f (x)
float x;
{
}
/* ICE with -Wstrict-prototypes and typeof an undeclared function.
Bug 20368. Test with -Wmissing-prototypes. */
/* { dg-do compile } */
/* { dg-options "-Wmissing-prototypes" } */
extern __typeof (f) g; /* { dg-error "error: 'f' undeclared here \\(not in a function\\)" } */
int
f (x)
float x;
{
}
/* ICE with -Wstrict-prototypes and typeof an undeclared function.
Bug 20368. Test with -Wmissing-declarations. */
/* { dg-do compile } */
/* { dg-options "-Wmissing-declarations" } */
extern __typeof (f) g; /* { dg-error "error: 'f' undeclared here \\(not in a function\\)" } */
int
f (x)
float x;
{
}
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