https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68971
--- Comment #12 from Paul Eggert <eggert at gnu dot org> --- Ah, sorry, I am using GCC 6.3.1, whereas __builtin_mul_overflow_p is a GCC 7-ism. Somehow I got it into my head that __builtin_mul_overflow(A,B,C) should be a constant expression if A, B, are constant expressions and C is a (constant) null pointer, but evidently that's not the case. Since the problem must be fixed in GCC 7 with its new __builtin_mul_overflow_p primitive, please close this bug.