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