https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93241
--- Comment #2 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- I think this is a bug. The expression meets all the requirements for integer constant expressions (the unevaluated part of the expression has only permitted operands and casts, much like the "2 || 1 / 0" example).