https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121416
Bug ID: 121416
Summary: [gcn][MI300][CDNA3]
libgomp.oacc-c-c++-common/reduction-cplx-dbl.c
produces wrong gang-reduction result
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Keywords: openacc, wrong-code
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: burnus at gcc dot gnu.org
CC: ams at gcc dot gnu.org
Target Milestone: ---
Target: gcn
For all optimization levels:
libgomp.oacc-c-c++-common/reduction-cplx-dbl.c
produces the wrong result for 'gang', only:
Expected (approx):
sum 104.833984 + 109.667969 i
prod 698317287061244416.0 - 950434920224383616.0 i
Actual result (varies):
tsum 33.609375 + 35.218750 i
tpod 676.427908 + 228.939762 i
That's for:
typedef double _Complex Type;
...
gang (Type ary[N], Type sum, Type prod)
{
Type tsum = 0, tprod = 1;
#pragma acc parallel num_gangs (32) copyin(ary[0:N])
{
#pragma acc loop gang reduction(+:tsum) reduction (*:tprod)
for (int ix = 0; ix < N; ix++)
{
tsum += ary[ix];
tprod *= ary[ix];
}
...