https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68971

--- Comment #6 from Paul Eggert <eggert at gnu dot org> ---
(In reply to Martin Sebor from comment #5)
> This is a valid constant expression

I'm aware of the distinction between constant and other expressions. I'm trying
to give the ordinary user's viewpoint, not the viewpoint of a language
standards nerd. From the ordinary user's viewpoint GCC is busted here because
it is crying wolf. There are tons of other places where GCC could cry wolf
while following the letter of the standard, but GCC doesn't do that because in
practice crying wolf is counterproductive.

> since __builtin_mul_overflow has already computed the product it
> seems that the result should be used rather than computed again using plain
> multiplication.

It's a test program, and it's doing things twice in order to test them for
consistency. You're right, most likely this particular combination wouldn't
occur except in test programs. So it could be that the use of -Wno-overflow can
be limited to test programs, if we're lucky. Still, it'd be better if GCC were
fixed to not cry wolf in situations like these.

Reply via email to