https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70354
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |6.0 --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- C testcase: extern void abort (void); void hash(unsigned long long int *seed, unsigned long long int const v) { *seed ^= v + 0x9e3779b9 + (*seed<<6) + (*seed>>2); } unsigned long long int a [1000]; long int b [1000]; long int c [1000]; unsigned long int d [1000]; unsigned long int e [1000]; unsigned long long int f [1000]; long int g [1000]; long int h [1000]; void init () { for (int i = 0; i < 1000; ++i) { a [i] = 14694295297531861425ULL; b [i] = -1725558902283030715L; c [i] = 4402992416302558097L; d [i] = 2890788459207692227UL; e [i] = 6297173129107286501UL; f [i] = 13865724171235650855ULL; g [i] = 982871027473857427L; h [i] = 8193845517487445944L; } } void foo () { for (int i = 449; i < 768; i = ((i) + (3))) { d [i] = h [i] << (((((unsigned long int)b [i] * e [i]) << (-a [i] - 3752448776177690134ULL)) - 8214565720323784703UL) - 1UL); e [i] = (_Bool)(f [i] + (unsigned long long int)g [i]); g [i] = c [i]; } } unsigned long long int checksum () { unsigned long long int seed = 0ULL; for (int i = 0; i < 1000; ++i) { hash(&seed, d [i]); hash(&seed, e [i]); hash(&seed, f [i]); hash(&seed, g [i]); hash(&seed, h [i]); } return seed; } int main () { init (); foo (); if (checksum () != 6060289626626340782ULL) abort (); return 0; }