On Mon, Oct 08, 2018 at 05:22:24PM +0000, Koenig, Christian wrote: > Am 08.10.2018 um 17:57 schrieb Deucher, Alexander: > >>>> One thing I found missing in the discussion was the reference to the > >>>> C standard. > >>>> The C99 standard states in section 6.7.8 (Initialization) clause 19: > >>>> "... all > >>>> subobjects that are not initialized explicitly shall be initialized > >>>> implicitly the same as objects that have static storage duration". > >>>> Clause 21 makes further reference to partial initialization, > >>>> suggesting the same. Various online resources, including the gcc > >>>> documentation, all state the same. I don't find any reference to a > >>>> partial initialization which would leave members of a structure > >>>> undefined. It would be interesting for me to understand how and why > >>>> this does not apply here. > >>>> > >>>> In this context, it is interesting that the other 48 instances of the > >>>> { { 0 } } initialization in the same driver don't raise similar > >>>> concerns, nor seemed to have caused any operational problems. > >>> Feel free to provide patches to replace those with memset(). > >>> > >> Not me. As I see it, the problem, if it exists, would be a violation of the C > >> standard. I don't believe hacking around bad C compilers. I would rather > >> blacklist such compilers. > > Well then you would need to blacklist basically all gcc variants of the > last decade or so. > > Initializing only known members of structures is a perfectly valid > optimization and well known issue when you then compare the structure > with memcpy() or use the bytes for hashing or something similar. > Isn't that about padding ? That is a completely different issue. Guenter _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx