Elsewhere in the Fortran front-end, the class_pointer attribute is
used for BT_CLASS entities instead of the pointer attribute. This patch
follows suit for OpenACC. I couldn't actually come up with a test case
where this makes a difference (i.e., where "class_pointer" and "pointer"
have different values at this point in the code), but this may nonetheless
fix a latent bug.
gcc/fortran/
* trans-openmp.c (gfc_trans_omp_clauses): Use class_pointer attribute
for BT_CLASS.
(cherry picked from commit
f743fe231663e32d52db987650d0ec3381a777af)
+2021-02-24 Julian Brown <julian@codesourcery.com>
+
+ Backport from mainline
+
+ * trans-openmp.c (gfc_trans_omp_clauses): Use class_pointer attribute
+ for BT_CLASS.
+
2021-02-24 Julian Brown <julian@codesourcery.com>
Backport from mainline
if (lastcomp->u.c.component->ts.type == BT_DERIVED
|| lastcomp->u.c.component->ts.type == BT_CLASS)
{
- if (sym_attr.pointer || (openacc && sym_attr.allocatable))
+ bool pointer
+ = (lastcomp->u.c.component->ts.type == BT_CLASS
+ ? sym_attr.class_pointer : sym_attr.pointer);
+ if (pointer || (openacc && sym_attr.allocatable))
{
tree data, size;