https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71255
--- Comment #16 from Florian Weimer <fw at gcc dot gnu.org> --- (In reply to Marek Polacek from comment #15) > Yeah, only the C++ side was changed. I think it's wrong that we reject the > testcase in Comment 14 in C (I have a fix for that). Good. > But even with that fixed we still need the new #pragma because of the second > testcase in Comment 13, right? I'm surprised this is even valid C. The test case as-is does not seem relevant to the glibc usage scenario because all completions would use the may_alias attribute. Only some forward declarations would not. This could be a relevant fringe case we need to support: struct S s; struct __attribute__((may_alias)) S { int i; }; Although it can only arise if there is a definition *before* including the relevant header file. I think the real question is whether it matters anywhere if a pointer to an incomplete struct has the may_alias attribute or not.