https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114825
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Yes, and the reason for that is that while in subroutine pr114825(b) type t real, allocatable :: m(:) end type t type(t), allocatable, target :: b(:) type(t), pointer :: d !$omp parallel private(d) d => b(1) !$omp end parallel contains subroutine sub ! d => b(1) end subroutine sub end subroutine pr114825 the d in the private clause is the VAR_DECL created by the Fortran FE with DECL_LANG_SPECIFIC, d in the private clause in the testcase without the d => b(1) commented out is a VAR_DECL created by tree-nested.cc: #5 0x000000000123a64b in build_decl (loc=21312, code=VAR_DECL, name=<identifier_node 0x7fffe9efc118 d>, type=<pointer_type 0x7fffe9f03150>) at ../../gcc/tree.cc:5379 #6 0x0000000000f4f39e in get_local_debug_decl (info=0x3b871d0, decl=<var_decl 0x7fffea137c60 d>, field=<field_decl 0x7fffe9f00720 d>) at ../../gcc/tree-nested.cc:1895 #7 0x0000000000f504c9 in convert_local_omp_clauses (pclauses=0x7fffea134780, wi=0x7fffffffd9b0) at ../../gcc/tree-nested.cc:2157 Perhaps get_local_debug_decl should also copy DECL_LANG_SPECIFIC? Of course, perhaps it might need e.g. DECL_LANG_FLAG_* too. If decl in there is just a VAR_DECL, we might as well just copy_node it and tweak afterwards, but if it is e.g. a PARM_DECL, that wouldn't be possible.