OpenACC and Fortran: compiler error question

I am porting a large piece of fortran 90 software to GPGPUs, using mainly openacc directives. Compiling a particular module results in the following messages (after some successful parallelisation):
17468, Generating present_or_copy(g_contrib(:))
17469, Loop is parallelizable
Accelerator kernel generated
17469, !$acc loop gang, vector(128) ! blockidx%x threadidx%x
/tmp/pgcudaforqkwcWMmDq0Ld.gpu(118): error: expression must have class type

/tmp/pgcudaforqkwcWMmDq0Ld.gpu(121): error: expression must have class type

/tmp/pgcudaforqkwcWMmDq0Ld.gpu(165): error: expression must have class type

/tmp/pgcudaforqkwcWMmDq0Ld.gpu(168): error: expression must have class type

/tmp/pgcudaforqkwcWMmDq0Ld.gpu(212): error: expression must have class type

I then get a load more of these errors, until it bugs out complaining there are too many. I have commented out the content of all of the subroutines following line 17469 in the module and this does not change the errors.
In case it helps here is an example of one of the lines in the temporary file that this is referring to (line 165):
_d_1 = (( double)(((p3)+(-16))+((_i_1))))+(((p4.r)(Rf_23))((Rx_24)*(1.73205080756887719E+0)));
Can anyone help me understand these error messages.

Many thanks!

Hi ToniC,

This means the compiler is generating bad device code but I can’t tell from this snip-it what that would be. Can you please send a reproducing example to PGI Customer Service (trs@pgroup.com) and as them to send it to me?

I’ll take a look and see if I can determine the cause, report the error, had hopefully find a work-around.

Thanks,
Mat

Hi Mat,

Thanks for your reply. I’ve sent a test module to the PGI Customer Service email address as you suggested. Sorry for the delay - it took a while to cut the snippet out of the code and still have it compile with the relevant errors!

Many thanks,
Toni.

Toni,

Mat is at SPEC this week, but may check in. I have recreated
your behavior with test_code.CUF, and I have filed TPR 19438.

Engneering will be looking at this.

regards,
dave