public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/21033] New: Erroneous "excess elements in array initializer" warning
@ 2005-04-14 22:10 acct4290 at dedion dot com
  2005-04-14 22:12 ` [Bug c/21033] " acct4290 at dedion dot com
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: acct4290 at dedion dot com @ 2005-04-14 22:10 UTC (permalink / raw)
  To: gcc-bugs

gcc erroneously reports "excess elements in array initializer" under certain
circumstances (sample code attached).  I'm using gcc 3.3.3 under Fedora Core 2,
but I've seen the same problem on 3.4 and 4.0 experimental.

---- begin self-contained test program bug.c ----

/* I know you don't want #includes, but this is here just for the
 * sake of printf().  It can probably be safely removed. */
#include <stdio.h>
 
/****************************************************************
 * This array is okay.
 ****************************************************************/
int *a[] =
{
        (int []) { 1, 2, 3, 4, 0 },
        (int []) { 5, 6, 0 },
        (int []) { 7, 8, 9, 10, 11, 12, 13, 0 },
        (int []) { 14, 0 }
};
 
/****************************************************************
 * This array should be identical.  It contains all the same
 * elements as a[], but this time the size (4) is specified.
 * Gcc generates "excess element" warnings for each sub-array
 * with more than 4 elements, even though the length of these
 * arrays has NOT been specified.
 ****************************************************************/
int *b[4] =
{
        (int []) { 1, 2, 3, 4, 0 },                                     /*
WARNING: excess elements in array initializer */
        (int []) { 5, 6, 0 },
        (int []) { 7, 8, 9, 10, 11, 12, 13, 0 },        /* WARNING: excess
elements in array initializer */
        (int []) { 14, 0 }
};
 
/****************************************************************
 * This array is the same as b[], except the size of each sub-
 * array is specified.  It compiles without warnings and looks
 * the same as a[] when passed to print_array().
 ****************************************************************/
int *c[4] =
{
        (int [5]) { 1, 2, 3, 4, 0 },
        (int [3]) { 5, 6, 0 },
        (int [8]) { 7, 8, 9, 10, 11, 12, 13, 0 },
        (int [2]) { 14, 0 }
};
 
/****************************************************************
 * Not only does the compiler throw warnings, it also produces
 * different code.  On my machine, print_array() produces the
 * same output from a[] and c[], but not from b[].
 ****************************************************************/
void
print_array (int **ptr, int count)
{
        int i, j;
 
        for (i=0; i < count; i++)
                for (j=0; ptr[i][j]; j++)
                        printf ("%d ", ptr[i][j]);
        printf ("\n");
}
 
int main (int argc, char **argv)
{
        print_array (a, sizeof (a) / sizeof (*a));
        print_array (b, sizeof (b) / sizeof (*b));
        print_array (c, sizeof (c) / sizeof (*c));
        return 0;
}

---- end self-contained test program bug.c ----

Here is the gcc command line.  Where should I attach the -save-temps
output files?

# gcc -v -save-temps bug.c
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.3.3/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--disable-checking --disable-libunwind-exceptions --with-system-zlib
--enable-__cxa_atexit --host=i386-redhat-linux
Thread model: posix
gcc version 3.3.3 20040412 (Red Hat Linux 3.3.3-7)
 /usr/lib/gcc-lib/i386-redhat-linux/3.3.3/cc1 -E -quiet -v -D__GNUC__=3
-D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=3 bug.c bug.i
ignoring nonexistent directory "/usr/i386-redhat-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/lib/gcc-lib/i386-redhat-linux/3.3.3/include
 /usr/include
End of search list.
 /usr/lib/gcc-lib/i386-redhat-linux/3.3.3/cc1 -fpreprocessed bug.i -quiet
-dumpbase bug.c -auxbase bug -version -o bug.s
GNU C version 3.3.3 20040412 (Red Hat Linux 3.3.3-7) (i386-redhat-linux)
        compiled by GNU C version 3.3.3 20040412 (Red Hat Linux 3.3.3-7).
GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=129392
bug.c:23: warning: excess elements in array initializer
bug.c:23: warning: (near initialization for `(anonymous)')
bug.c:25: warning: excess elements in array initializer
bug.c:25: warning: (near initialization for `(anonymous)')
bug.c:25: warning: excess elements in array initializer
bug.c:25: warning: (near initialization for `(anonymous)')
bug.c:25: warning: excess elements in array initializer
bug.c:25: warning: (near initialization for `(anonymous)')
bug.c:25: warning: excess elements in array initializer
bug.c:25: warning: (near initialization for `(anonymous)')
 as -V -Qy -o bug.o bug.s
GNU assembler version 2.15.90.0.3 (i386-redhat-linux) using BFD version
2.15.90.0.3 20040415
 /usr/lib/gcc-lib/i386-redhat-linux/3.3.3/collect2 --eh-frame-hdr -m elf_i386
-dynamic-linker /lib/ld-linux.so.2
/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/../../../crt1.o
/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/../../../crti.o
/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/crtbegin.o
-L/usr/lib/gcc-lib/i386-redhat-linux/3.3.3
-L/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/../../.. bug.o -lgcc --as-needed
-lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed
/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/crtend.o
/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/../../../crtn.o

-- 
           Summary: Erroneous "excess elements in array initializer" warning
           Product: gcc
           Version: 3.3.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: acct4290 at dedion dot com
                CC: gcc-bugs at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21033


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug c/21033] Erroneous "excess elements in array initializer" warning
  2005-04-14 22:10 [Bug c/21033] New: Erroneous "excess elements in array initializer" warning acct4290 at dedion dot com
@ 2005-04-14 22:12 ` acct4290 at dedion dot com
  2005-04-14 22:14 ` acct4290 at dedion dot com
  2005-04-14 22:25 ` jsm28 at gcc dot gnu dot org
  2 siblings, 0 replies; 4+ messages in thread
From: acct4290 at dedion dot com @ 2005-04-14 22:12 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From acct4290 at dedion dot com  2005-04-14 22:12 -------
Created an attachment (id=8635)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=8635&action=view)
Source file for self-contained test case.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21033


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug c/21033] Erroneous "excess elements in array initializer" warning
  2005-04-14 22:10 [Bug c/21033] New: Erroneous "excess elements in array initializer" warning acct4290 at dedion dot com
  2005-04-14 22:12 ` [Bug c/21033] " acct4290 at dedion dot com
@ 2005-04-14 22:14 ` acct4290 at dedion dot com
  2005-04-14 22:25 ` jsm28 at gcc dot gnu dot org
  2 siblings, 0 replies; 4+ messages in thread
From: acct4290 at dedion dot com @ 2005-04-14 22:14 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From acct4290 at dedion dot com  2005-04-14 22:14 -------
Created an attachment (id=8636)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=8636&action=view)
Preprocessed (.i) file for test case.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21033


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug c/21033] Erroneous "excess elements in array initializer" warning
  2005-04-14 22:10 [Bug c/21033] New: Erroneous "excess elements in array initializer" warning acct4290 at dedion dot com
  2005-04-14 22:12 ` [Bug c/21033] " acct4290 at dedion dot com
  2005-04-14 22:14 ` acct4290 at dedion dot com
@ 2005-04-14 22:25 ` jsm28 at gcc dot gnu dot org
  2 siblings, 0 replies; 4+ messages in thread
From: jsm28 at gcc dot gnu dot org @ 2005-04-14 22:25 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From jsm28 at gcc dot gnu dot org  2005-04-14 22:25 -------


*** This bug has been marked as a duplicate of 19435 ***

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |DUPLICATE


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21033


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2005-04-14 22:25 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-04-14 22:10 [Bug c/21033] New: Erroneous "excess elements in array initializer" warning acct4290 at dedion dot com
2005-04-14 22:12 ` [Bug c/21033] " acct4290 at dedion dot com
2005-04-14 22:14 ` acct4290 at dedion dot com
2005-04-14 22:25 ` jsm28 at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).