[Bug c/37371] New: wrong initialisation of an array of ptrs
skylendar at yahoo dot com
gcc-bugzilla@gcc.gnu.org
Thu Sep 4 14:51:00 GMT 2008
First of all, thanx to all the gcc team for their fantastic job.
gcc: 4.3.2 bootstraped with CFLAGS=-O2 -pipe -march=athlon -fomit-frame-pointer
Target: linux 2.6.25 on mandriva 2008.0
Problem: the following code works fine with low optimization -O0, -O1,
but gives fancy results with -O2, -O3. No problem with compilation.
The fill function fills up and array of char * with char* provided as
arguments.
The arguments are 0L terminated.
The example program should produce:
a
b
c
Thanx beforehand for your attention.
...
#include <stdio.h>
void fill(char *t[], char *c, ...)
{
char **ptr = &c;
while(*ptr)
*t++ = *ptr++;
}
int main()
{
int i;
char *abc[3];
fill(abc, "a", "b", "c", 0L);
for(i = 0; i < 3; i++)
printf("%s\n", abc[i]);
}
--
Summary: wrong initialisation of an array of ptrs
Product: gcc
Version: 4.3.2
Status: UNCONFIRMED
Severity: major
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: skylendar at yahoo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37371
More information about the Gcc-bugs
mailing list