diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5e8a97068737..525895866728 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-06-26 Joseph Myers + + * c-decl.c (merge_decls): Use !current_function_decl to check for + extern declaration of C99 inline function being at file scope. + 2008-06-25 John David Anglin * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto. diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 38c1581b3ff1..18ad11901f97 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -1764,8 +1764,7 @@ merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype) || !DECL_EXTERNAL (olddecl)) && DECL_EXTERNAL (newdecl) && !lookup_attribute ("gnu_inline", DECL_ATTRIBUTES (newdecl)) - && (DECL_CONTEXT (newdecl) == NULL_TREE - || TREE_CODE (DECL_CONTEXT (newdecl)) != FUNCTION_DECL)) + && !current_function_decl) DECL_EXTERNAL (newdecl) = 0; if (DECL_EXTERNAL (newdecl)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d2df6992b1b5..01a008f3c186 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2008-06-26 Joseph Myers + + * gcc.dg/inline-32.c, gcc.dg/inline-32a.c: New tests. + 2008-06-26 Ira Rosen * testsuite/lib/target-supports.exp diff --git a/gcc/testsuite/gcc.dg/inline-32.c b/gcc/testsuite/gcc.dg/inline-32.c new file mode 100644 index 000000000000..bfcafd5dbba0 --- /dev/null +++ b/gcc/testsuite/gcc.dg/inline-32.c @@ -0,0 +1,11 @@ +/* { dg-do link } */ +/* { dg-options "-std=c99 -pedantic-errors" } */ +/* { dg-additional-sources inline-32a.c } */ +inline int f (void) { return 0; } + +int +main (void) +{ + extern int f(); + return f (); +} diff --git a/gcc/testsuite/gcc.dg/inline-32a.c b/gcc/testsuite/gcc.dg/inline-32a.c new file mode 100644 index 000000000000..a2bde0aac4b2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/inline-32a.c @@ -0,0 +1,3 @@ +/* { dg-do compile } */ +/* { dg-options "-std=c99 -pedantic-errors" } */ +int f (void) { return 0; }