Don't make unsized objects into extern.
authorIain Sandoe <iain@sandoe.co.uk>
Wed, 15 Aug 2018 11:45:44 +0000 (11:45 +0000)
committerIain Sandoe <iains@gcc.gnu.org>
Wed, 15 Aug 2018 11:45:44 +0000 (11:45 +0000)
2018-08-15  Iain Sandoe <iain@sandoe.co.uk>

gcc/c:

        PR c/19315
        * c-decl.c (finish_decl): Don't add the 'extern' storage class to
        objects of unknown size.

gcc/testsuite:

        PR c/19315
        gcc.dg/graphite/pr82451.c: Make array 'a' an extern.
        gcc.dg/redecl-10.c: Expect warnings for the static vars with unknown
        size.

From-SVN: r263556

gcc/c/ChangeLog
gcc/c/c-decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/graphite/pr82451.c
gcc/testsuite/gcc.dg/redecl-10.c

index be2ffbd2adebf11618241a2e21f737751d1c3c86..59312062d96ca5518e376393b34573a56cfd48e1 100644 (file)
@@ -1,3 +1,9 @@
+2018-08-15  Iain Sandoe  <iain@sandoe.co.uk>
+
+       PR c/19315
+       * c-decl.c (finish_decl): Don't add the 'extern' storage class to
+       objects of unknown size.
+
 2018-08-13  Martin Sebor  <msebor@redhat.com>
 
        PR tree-optimization/71625
index ed1dd28cac63c8fe2155b99cd74ef60419e97f4e..da42add07327d733d6fd7e48d21843ff81d04041 100644 (file)
@@ -4969,14 +4969,6 @@ finish_decl (tree decl, location_t init_loc, tree init,
        case 2:
          if (do_default)
            error ("array size missing in %q+D", decl);
-         /* If a `static' var's size isn't known,
-            make it extern as well as static, so it does not get
-            allocated.
-            If it is not `static', then do not mark extern;
-            finish_incomplete_decl will give it a default size
-            and it will get allocated.  */
-         else if (!pedantic && TREE_STATIC (decl) && !TREE_PUBLIC (decl))
-           DECL_EXTERNAL (decl) = 1;
          break;
 
        case 3:
index 46a16279fe055318036e8945ae1ba39b1bb5c6bc..18bb966ca42dfda9bcf8c344428402d23c26ec3b 100644 (file)
@@ -1,3 +1,10 @@
+2018-08-15  Iain Sandoe  <iain@sandoe.co.uk>
+
+       PR c/19315
+       * gcc.dg/graphite/pr82451.c: Make array 'a' an extern.
+       * gcc.dg/redecl-10.c: Expect warnings for the static vars with
+       unknown size.
+
 2018-08-15  Martin Liska  <mliska@suse.cz>
 
         PR tree-optimization/86925
index 802b931fdddd2934854507129f108c64605a2778..b2c439bb5630b85b6fabbbb603b564489971e729 100644 (file)
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O -floop-parallelize-all" } */
 
-static int a[];
+extern int a[];
 int b[1];
 int c;
 static void
index 525961e7e3a62c83d031629370457a3ea901f0ef..0864311f64ea0b93f9445d87689323e0f8ba1588 100644 (file)
@@ -5,7 +5,7 @@
 /* { dg-do compile } */
 /* { dg-options "-g" } */
 
-static int w[];
+static int w[]; /* { dg-warning "array 'w' assumed to have one element" } */
 void
 f (void)
 {
@@ -19,7 +19,7 @@ g (void)
   extern int x[] = { 3, 4, 5 }; /* { dg-error "has both" } */
 }
 
-static int y[];
+static int y[]; /* { dg-warning "array 'y' assumed to have one element" } */
 void
 h (void)
 {