https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102502
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #4) > (In reply to Jakub Jelinek from comment #2) > > Why do you think it is a bug? > > Because there were other bugs which were fixed where there was an > inconsistency, PR 66618, and PR 71983 for an example. There are others. > > Oh there is an inconsistency when the _Static_assert is not in a function vs > inside a function. > Take: > static const int allocation_size = 32768; > _Static_assert (allocation_size, ""); > void f(void) { _Static_assert(allocation_size, ""); } > > The assert inside the function is accepted at -O1 but reject at -O0 while > the one outside is always rejected. But it is an intentional decision, to match the previous behavior in that area plus handle what was needed.