http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56161
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED CC| |jakub at gcc dot gnu.org Resolution| |INVALID --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-01-31 11:45:53 UTC --- double cam_xyz[4][3]; ... for (j=0; j < 12; j++) cam_xyz[0][j] = table[i].trans[j] / 10000.0; When using cam_xyz[0][j], this is first converted into a pointer to array of 3 doubles, so cam_xyz[0][3] store (up to cam_xyz[0][11] store) all invoke undefined behavior. You just can't initialize a two dimensional array this way.