------- Additional Comments From tobi at gcc dot gnu dot org 2005-06-05 11:11 ------- >From the .original-dump, the loop where the array constructor is built: i = *n; while (1) { if (i > 1) goto L.1; else (void) 0; ^^^^^ this is wrong (*atmp.0.data)[offset.2] = i; offset.2 = offset.2 + 1; i = i + -1; } L.1:; i.e. the array is indeed left uninitialized, because the condition is the wrong way round.
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21912