This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/70354] [6 Regression] Wrong code with -O3 -march=broadwell and -march=skylake-avx512.
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 22 Mar 2016 11:55:26 +0000
- Subject: [Bug target/70354] [6 Regression] Wrong code with -O3 -march=broadwell and -march=skylake-avx512.
- Auto-submitted: auto-generated
- References: <bug-70354-4 at http dot gcc dot gnu dot org/bugzilla/>
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;
}