This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/70354] [6 Regression] Wrong code with -O3 -march=broadwell and -march=skylake-avx512.


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;
}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]