https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81471
--- Comment #6 from Uroš Bizjak ---
(In reply to Gian-Carlo Pascutto from comment #4)
> Further reduced testcase:
>
> #include
>
> uint64_t f(uint64_t x) {
> return ((uint32_t)x << 55) | ((uint32_t)x >> -23);
> }
>
> This makes it more
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81471
Uroš Bizjak changed:
What|Removed |Added
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81471
--- Comment #4 from Gian-Carlo Pascutto ---
Further reduced testcase:
#include
uint64_t f(uint64_t x) {
return ((uint32_t)x << 55) | ((uint32_t)x >> -23);
}
This makes it more clear the code is UB, but AFAIK a compiler ICE doesn't fall
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81471
--- Comment #3 from Gian-Carlo Pascutto ---
Note the flags, -march=native in this case was Intel Haswell.
-O3 -march=haswell is required to trigger this.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81471
--- Comment #2 from Gian-Carlo Pascutto ---
#include
inline uint32_t rotl(const uint32_t x, const int k) {
return (x << k) | (x >> (32 - k));
}
uint64_t s[2];
uint64_t random(void) {
const uint64_t s0 = s[0];
uint64_t s1 = s[1];
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81471
--- Comment #1 from Uroš Bizjak ---
(In reply to Gian-Carlo Pascutto from comment #0)
> In another module there is:
Please provide a compilable source file (preferably minimized) that triggers
the ICE, as instructed in [1].
[1]