]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Tweak error message for mapped parameters.
authorAndrew Stubbs <ams@codesourcery.com>
Fri, 5 Jul 2019 16:00:46 +0000 (16:00 +0000)
committerThomas Schwinge <thomas@codesourcery.com>
Tue, 3 Mar 2020 11:50:59 +0000 (12:50 +0100)
2019-09-06  Andrew Stubbs  <ams@codesourcery.com>

Backport from mainline:

2019-07-05  Andrew Stubbs  <ams@codesourcery.com>

gcc/fortran/
* openmp.c (resolve_omp_clauses): Add custom error messages for
parameters in map clauses.

(cherry picked from openacc-gcc-9-branch commit
7ed5fa7ae91f1c504d7c1b750a10647b27fdf954)

gcc/fortran/ChangeLog.omp
gcc/fortran/openmp.c

index c8456e4bd0a49efe4a7b0c5c5f4c9a55b1c265d9..576e33fd567fe3c79bb172aec09aa04e10dd9fed 100644 (file)
@@ -1,3 +1,12 @@
+2019-09-06  Andrew Stubbs  <ams@codesourcery.com>
+
+       Backport from mainline:
+
+       2019-07-05  Andrew Stubbs  <ams@codesourcery.com>
+
+       * openmp.c (resolve_omp_clauses): Add custom error messages for
+       parameters in map clauses.
+
 2019-07-10  Julian Brown  <julian@codesourcery.com>
 
        * trans-openmp.c (gfc_omp_finish_clause): Change clauses mapping
index adf8d4240f7cfdfced46207b193ec18091c925ec..fa0cd6f84a3734856aa9bc262fbb18ea890378e9 100644 (file)
@@ -4279,8 +4279,21 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses,
                  continue;
              }
          }
-       gfc_error ("Object %qs is not a variable at %L", n->sym->name,
-                  &n->where);
+       if (list == OMP_LIST_MAP
+           && n->sym->attr.flavor == FL_PARAMETER)
+         {
+           if (openacc)
+             gfc_error ("Object %qs is not a variable at %L; parameters"
+                        " cannot be and need not be copied", n->sym->name,
+                        &n->where);
+           else
+             gfc_error ("Object %qs is not a variable at %L; parameters"
+                        " cannot be and need not be mapped", n->sym->name,
+                        &n->where);
+         }
+       else
+         gfc_error ("Object %qs is not a variable at %L", n->sym->name,
+                    &n->where);
       }
 
   for (list = 0; list < OMP_LIST_NUM; list++)