https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63645
--- Comment #10 from Mikael Pettersson <mikpelinux at gmail dot com> --- I now think the test case is invalid. There is special provision in the standard for accessing "the wrong member" of a union, but the member has to be a struct type which shares a prefix with the current dynamic member (which also has to be a struct). That is, if you wrap the oper member of _GnmExpr in a struct then I think the program is valid.