Commit ee060229 by Joseph Myers Committed by Joseph Myers

re PR c/18239 (ICE in get_parm_info with werid attribute)

	PR c/18239
	* c-decl.c (get_parm_info): Allow FUNCTION_DECLs to appear amongst
	parameter declarations.

testsuite:
	* gcc.dg/parm-impl-decl-1.c, gcc.dg/parm-impl-decl-2.c: New tests.

From-SVN: r89956
parent 40d05429
2004-11-01 Joseph S. Myers <joseph@codesourcery.com>
PR c/18239
* c-decl.c (get_parm_info): Allow FUNCTION_DECLs to appear amongst
parameter declarations.
2004-11-01 Andreas Krebbel <krebbel1@de.ibm.com> 2004-11-01 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.c (regclass_map): Put reg 33 (cc) to CC_REGS group. * config/s390/s390.c (regclass_map): Put reg 33 (cc) to CC_REGS group.
......
...@@ -4855,10 +4855,13 @@ get_parm_info (bool ellipsis) ...@@ -4855,10 +4855,13 @@ get_parm_info (bool ellipsis)
case CONST_DECL: case CONST_DECL:
case TYPE_DECL: case TYPE_DECL:
case FUNCTION_DECL:
/* CONST_DECLs appear here when we have an embedded enum, /* CONST_DECLs appear here when we have an embedded enum,
and TYPE_DECLs appear here when we have an embedded struct and TYPE_DECLs appear here when we have an embedded struct
or union. No warnings for this - we already warned about the or union. No warnings for this - we already warned about the
type itself. */ type itself. FUNCTION_DECLs appear when there is an implicit
function declaration in the parameter list. */
TREE_CHAIN (decl) = others; TREE_CHAIN (decl) = others;
others = decl; others = decl;
/* fall through */ /* fall through */
...@@ -4875,7 +4878,6 @@ get_parm_info (bool ellipsis) ...@@ -4875,7 +4878,6 @@ get_parm_info (bool ellipsis)
/* Other things that might be encountered. */ /* Other things that might be encountered. */
case LABEL_DECL: case LABEL_DECL:
case FUNCTION_DECL:
case VAR_DECL: case VAR_DECL:
default: default:
gcc_unreachable (); gcc_unreachable ();
......
2004-11-01 Joseph S. Myers <joseph@codesourcery.com>
PR c/18239
* gcc.dg/parm-impl-decl-1.c, gcc.dg/parm-impl-decl-2.c: New tests.
2004-11-01 Nathan Sidwell <nathan@codesourcery.com> 2004-11-01 Nathan Sidwell <nathan@codesourcery.com>
PR c++/18064 PR c++/18064
......
/* Test implicit function declarations and other odd declarations in
function prototypes. Bug 18239. */
/* Origin: Joseph Myers <joseph@codesourcery.com> */
/* { dg-do compile } */
/* { dg-options "" } */
/* Implicit function declaration in attribute in definition (testcase
from bug). */
int
foo (int __attribute__ ((__mode__ (vector_size(8)))) i) /* { dg-warning "warning: '__mode__' attribute ignored" } */
{
return (long long) i;
}
/* Various other cases. */
int f (int [sizeof(g())]);
int f1 (int [sizeof(g1())]);
int g () { return 1; }
int
h (int (*p)[sizeof(i())])
{
int g2 (), g3 ();
return (*p)[0] + g3() + g2();
}
int i () { return 2; }
int f2 (int [sizeof(g2())]);
int f3 (int [sizeof(g3())]);
int g3 () { return 4; }
/* Test implicit function declarations and other odd declarations in
function prototypes. Make sure that LABEL_DECLs don't occur. */
/* Origin: Joseph Myers <joseph@codesourcery.com> */
/* { dg-do compile } */
/* { dg-options "" } */
int k (int [sizeof &&z]); /* { dg-error "error: label 'z' referenced outside of any function" } */
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