https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98641
Alex Richardson <Alexander.Richardson at cl dot cam.ac.uk> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |Alexander.Richardson at cl dot cam | |.ac.uk --- Comment #5 from Alex Richardson <Alexander.Richardson at cl dot cam.ac.uk> --- In clang __builtin_assume_aligned will not be used by the constant expression evaluator, but it will be used for code generation: for example, _Bool check(void* x) { return __builtin_is_aligned(__builtin_assume_aligned(x, 16), 16); } is folded to "return true", but something like extern int i; _Static_assert(__builtin_is_aligned(__builtin_assume_aligned(&i, 16), 8), ""); generates an "alignment of the base pointee object (4 bytes) is less than the asserted 16 byte" error when evaluating __builtin_assume_aligned(). https://godbolt.org/z/96h6j1