https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110281
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #10 from Andrew Pinski <pinskia at gcc dot gnu.org> --- For the reduced testcase: union { long f0; int f1; long f2; short f3 } g_147[][3] ... int *g_198 = &g_147[3][2].f1, *g_229 = &g_206; static short *g_248 = &g_147[3][2].f3 ... *func_17_l_939 = *g_248; yes that is invalid use of the union. The original code had a similar pattern too. union U4 { const int64_t f0; int32_t f1; const volatile uint64_t f2; int16_t f3; }; ... static union U4 g_147[9][3] ... static int32_t * volatile g_198 = &g_147[3][2].f1; ... static int16_t *g_248 = &g_147[3][2].f3;