Regarding undefined behavior: this object has static storage, so I think 6.7.9-10 from C11 should apply:
Strictly speaking, once the behavior of a program is undefined, even well-defined constructs can have unexpected effects. But I do agree that dropping initialization for members with a valid (i.e., non-zero sized aggregate) initializer is likely a bug. (GCC does allow empty initializer-lists as a (useful) extension independent of zero-size arrays and I don't think that's the source of the problem here.)
Isn't it strange that C90 warnings are emitted in presence of -std=c11? I don't get these C90 warnings with 4.9.1 if I specify -std=c99 or -stc=c11.
This was my mistake because specifying -ansi after -std=c11 overrides the latter with -std=c90. (It would be nice if the driver warned about one option overriding another.) Martin