https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79373
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution|--- |INVALID
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Steven Pigeon from comment #2)
> (In reply to Andrew Pinski from comment #1)
> > I am suspecting this:
> > t*=65793;
> >
> > overflows.
> >
> > Can you try with -fsanitize=undefined ?
>
> The bug disappears with
>
> g++ -fsanitize=undefined -O3 -std=c++11 test-wave-stream.cpp
>
> Yes, it overflows for some values (and is undefined behavior?).
loop-bug/test-wave-stream.cpp:29:10: runtime error: signed integer overflow:
32641 * 65793 cannot be represented in type 'int'
> But it shouldn't affect the for-loop. At worse, the returned values should
> be random-looking and the unit test should fail with a message.
No, that's not what undefined behaviour means.