https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85662
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2018-05-05 CC| |jakub at gcc dot gnu.org Version|unknown |8.0 Target Milestone|--- |8.2 Summary|regression since 6: "error: |[8/9 Regression] "error: |non-constant condition for |non-constant condition for |static assertion" from |static assertion" from |__builtin_offsetof in C++ |__builtin_offsetof in C++ Ever confirmed|0 |1 --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Weird, I can only reproduce it starting with r247495 and can't reproduce with gcc 7. Better testcase that doesn't really depend on the actual structure layout and sizes: struct S { unsigned long x[31]; }; struct T { bool b; S f; }; static_assert (__builtin_offsetof (T, f.x[31 - 1]) == __builtin_offsetof (T, f.x[30]), ""); Using 30 instead of 31-1 makes it go away, and the problem is that something creates or keeps around 8 as pointer constant.