The reproduction is below. Not sure if this is intended or a bug, sorry to clutter up the mailing list if it's intended!
union __attribute__((may_alias)) works {}; // <source>:3:18: note: attribute for 'union broken2' must follow the 'union' keyword union broken1 {} [[may_alias]]; // Okay, so let's move it so it follows union... // <source>:7:21: warning: 'may_alias' attribute directive ignored [-Wattributes] // 7 | union [[may_alias]] broken2 {}; // | ^~~~~~~ union [[may_alias]] broken2 {};