2004-12-21 James A. Morrison <phython@gcc.gnu.org>
authorphython <phython@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 21 Dec 2004 17:07:06 +0000 (17:07 +0000)
committerphython <phython@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 21 Dec 2004 17:07:06 +0000 (17:07 +0000)
       PR c/18963
       * c-decl.c (pushdecl): Remove block trying to merge static function
       declarations at block scope to file scope declarations.

testsuite:
        PR c/18963
        * gcc.dg/pr18963-1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92460 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/c-decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr18963-1.c [new file with mode: 0644]

index 3fc0417..71a1525 100644 (file)
@@ -1,5 +1,11 @@
 2004-12-21  James A. Morrison  <phython@gcc.gnu.org>
 
+       PR c/18963
+       * c-decl.c (pushdecl): Remove block trying to merge static function
+       declarations at block scope to file scope declarations.
+
+2004-12-21  James A. Morrison  <phython@gcc.gnu.org>
+
        PR c/18596
        * c-parse.in (initdcl): Don't process a declaration if start_decl fails.
        (notype_initdcl):  Don't process a declaration if start_decl fails.
index f881ea8..975e281 100644 (file)
@@ -2069,30 +2069,6 @@ pushdecl (tree x)
            }
        }
     }
-  /* Similarly, a declaration of a function with static linkage at
-     block scope must be checked against any existing declaration
-     of that function at file scope.  */
-  else if (TREE_CODE (x) == FUNCTION_DECL && scope != file_scope
-          && !TREE_PUBLIC (x) && !DECL_INITIAL (x))
-    {
-      if (warn_nested_externs && !DECL_IN_SYSTEM_HEADER (x))
-       warning ("nested static declaration of %qD", x);
-
-      while (b && !B_IN_FILE_SCOPE (b))
-       b = b->shadowed;
-
-      if (b && same_translation_unit_p (x, b->decl)
-         && duplicate_decls (x, b->decl))
-       {
-         bind (name, b->decl, scope, /*invisible=*/false, /*nested=*/true);
-         return b->decl;
-       }
-      else
-       {
-         bind (name, x, file_scope, /*invisible=*/true, /*nested=*/false);
-         nested = true;
-       }
-    }
 
   warn_if_shadowing (x);
 
index 0c742af..99ccef8 100644 (file)
@@ -1,5 +1,10 @@
 2004-12-21  James A. Morrison  <phython@gcc.gnu.org>
 
+       PR c/18963
+       * gcc.dg/pr18963-1.c: New test.
+
+2004-12-21  James A. Morrison  <phython@gcc.gnu.org>
+
        PR c/18596
        * gcc.dg/funcdef-storage-1.c (foo): Remove.
        * gcc.dg/pr18596-1.c: Use dg-error.
diff --git a/gcc/testsuite/gcc.dg/pr18963-1.c b/gcc/testsuite/gcc.dg/pr18963-1.c
new file mode 100644 (file)
index 0000000..df43c65
--- /dev/null
@@ -0,0 +1,29 @@
+/* { dg-do run } */
+/* { dg-options "" } */
+
+static int barf ();
+
+int foo ()
+{ 
+  auto int barf ();
+  int j = 4;
+
+  int barf () {
+    return j;
+  }
+
+  return barf ();
+}
+
+static int barf () {
+  return 3;
+}
+
+extern void exit (int);
+extern void abort ();
+
+int main (int argc, char *argv[]) {
+  if (foo () != 4)
+    abort ();
+  exit (0);
+}