[Bug fortran/97390] [OpenAError compiling acc data present

burnus at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Oct 13 17:33:14 GMT 2020


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

Tobias Burnus <burnus at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Error compiling acc data    |[OpenAError compiling acc
                   |present                     |data present

--- Comment #5 from Tobias Burnus <burnus at gcc dot gnu.org> ---
(In reply to Thomas Schwinge from comment #1)
> Would it be the case that this line is longer than 132 characters?  [...]
> (I cannot comment on (a) why that's a useful limit to have

I don't know whether it is useful or not, but the Fortran standard has:

"In free source form [...] If a line consists entirely of characters of default
kind (7.4.4), it shall contain at most 132 characters" (Fortran 2018, 6.3.2.1 
Free form line length)


> , and (b) whether the error reporting shouldn't be improved.)

Well, the error message without changing the maximal supported line length is
(GCC 9, 10 or 11):

test.f90:2:132:
    2 |            !$acc data present(tempRbuffer, array, compactHaloInfo,
dimsizes, nHaloLayers, gpu_nList_send, gpu_idx_send, gpu_bufferOffset_send)
async(counter+1)
      |                                                                        
                                                           1
Error: Syntax error in OpenMP variable list at (1)

Which looks fine.



However, my error message improvements for GCC 10 really help. With
-ffree-line-length-none, the error is:

With GCC 9's : Error: Unclassifiable OpenACC directive at (1)

With GCC 10 or GCC 11:

    2 |            !$acc data present(tempRbuffer, array, compactHaloInfo,
dimsizes, nHaloLayers, gpu_nList_send, gpu_idx_send, gpu_bufferOffset_send)
async(counter+1)
      |                                                                        
                                                                       1
Error: Failed to match clause at (1)

Note the '1' is at 'async(...)'


I claim that GCC is right: 'acc data' does not have a 'async' clause in OpenACC
neither in 2.6 (= supported by GCC 10) nor in 3.0; see
https://www.openacc.org/specification

BTW: Consider using GCC 10, which extended the OpenACC support, cf.
https://gcc.gnu.org/gcc-10/changes.html


More information about the Gcc-bugs mailing list