On Thu, Jan 14, 2021 at 01:11:12PM -0800, Linus Torvalds wrote: > On Thu, Jan 14, 2021 at 11:41 AM Will Deacon <will@xxxxxxxxxx> wrote: > > > > Sure enough, an arm64 defconfig builds perfectly alright with that change, > > but it really shouldn't. I'm using clang 11.0.5, so I had another go with > > GCC 9.2.1 and bang: > > Ok, looks like a clang bug, but a reasonably benign one. > > As long as we have sufficient coverage with gcc, we'll get error > reporting in a timely manner for any new incorrect assignments, so I > think we can do that constant anonymous struct even if it does mean > that clang might let some bad cases through (I personally use gcc for > build testing, and then clang for building my boot kernels, so I'd > catch anything x86-64 allmodconfig in my build tests). > > And keeping it unnamed it would avoid a lot of noisy churn.. Hmm. The feedback on the clang bug suggests that GCC is the one in the wrong here (although the argument is based on C11 and I haven't trawled through the standards to see how this has evolved): https://bugs.llvm.org/show_bug.cgi?id=48755#c1 There is at least some sympathy to generating a warning, so that might be good enough. Otherwise, I suppose we can explicitly mark the fields as 'const' but I won't jump to that immediately. Will