diff options
author | Joseph Myers <joseph@codesourcery.com> | 2008-06-26 16:40:56 +0100 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2008-06-26 16:40:56 +0100 |
commit | 74b0ec7c400f3ad1e08300ed7d5f79b437ec6b39 (patch) | |
tree | 711e931b0478d086e57364a8c0a134cb4a3301d7 /gcc | |
parent | 30551d999a73fe2451dde20159132e87b7c33e91 (diff) | |
download | gcc-74b0ec7c400f3ad1e08300ed7d5f79b437ec6b39.zip gcc-74b0ec7c400f3ad1e08300ed7d5f79b437ec6b39.tar.gz gcc-74b0ec7c400f3ad1e08300ed7d5f79b437ec6b39.tar.bz2 |
c-decl.c (merge_decls): Use !current_function_decl to check for extern declaration of C99 inline...
* c-decl.c (merge_decls): Use !current_function_decl to check for
extern declaration of C99 inline function being at file scope.
testsuite:
* gcc.dg/inline-32.c, gcc.dg/inline-32a.c: New tests.
From-SVN: r137149
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c-decl.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/inline-32.c | 11 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/inline-32a.c | 3 |
5 files changed, 24 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5e8a970..5258958 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-06-26 Joseph Myers <joseph@codesourcery.com> + + * 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 <dave.anglin@gcc-cnrc.gc.ca> * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto. diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 38c1581..18ad119 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 d2df699..01a008f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2008-06-26 Joseph Myers <joseph@codesourcery.com> + + * gcc.dg/inline-32.c, gcc.dg/inline-32a.c: New tests. + 2008-06-26 Ira Rosen <irar@il.ibm.com> * 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 0000000..bfcafd5d --- /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 0000000..a2bde0a --- /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; } |