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).