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