https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70021

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Simplified testcase:
#define N 160
int a[N];
unsigned long long int b[N], c[N], d[N], e[N];

__attribute__((noinline, noclone)) void
foo ()
{
  int i;
  for (i = 0; i < N; i += 4)
    {
      unsigned long long int f = (_Bool) b[i];
      unsigned long long int g = c[i] != d[i];
      e[i] = g ^ (a[i] & (g << f));
    }
}

int
main ()
{
  int i;
  for (i = 0; i < N; ++i)
    a[i] = 1618000128;
  for (i = 0; i < N; ++i)
    b[i] = 10919594786573202791ULL;
  for (i = 0; i < N; ++i)
    c[i] = 2593730175074624973ULL;
  for (i = 0; i < N; ++i)
    d[i] = 7447894520878803661ULL;
  for (i = 0; i < N; ++i)
    e[i] = 14234165565810642243ULL;
  foo ();
  for (i = 0; i < N; ++i)
    if (e[i] != ((i & 3) ? 14234165565810642243ULL : 1ULL))
      __builtin_abort ();
  return 0;
}

Reply via email to