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;