aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2008-06-26 16:40:56 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2008-06-26 16:40:56 +0100
commit74b0ec7c400f3ad1e08300ed7d5f79b437ec6b39 (patch)
tree711e931b0478d086e57364a8c0a134cb4a3301d7 /gcc
parent30551d999a73fe2451dde20159132e87b7c33e91 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/c-decl.c3
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/inline-32.c11
-rw-r--r--gcc/testsuite/gcc.dg/inline-32a.c3
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; }