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

--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #1)
> Can you post a minimal version?

See below, fails with 4 systems, works with 3 others.

#define N 1024

int
main ()
{
  _Complex float orfc = 0;
  // _Complex int orfc = 0;  // variant; uses a GNU extension
  int rf[N] = {};   // Can also be _Complex (float/int) as in the orig example
  rf[5] = 1;

  #pragma omp target teams distribute parallel for reduction(||: orfc)
map(orfc)
  for (int i=0; i < N; ++i)
    orfc = orfc || rf[i];

  if (__real__ orfc != 1.0)  // if it fails, it is 0.0 + 0.0i
    __builtin_abort ();

  return 0;
}

Reply via email to