The patch is self-explaining and practically obvious: pointer bounds remapping to NULL is not allowed, thus we shall reject it. I hope the error message is fine. If somebody prefers a formulation as in the standard ("data target", also used by the Intel compiler), please speak now.
Regtested on x86_64-pc-linux-gnu. OK for trunk? Thanks, Harald Index: gcc/fortran/trans-expr.c =================================================================== --- gcc/fortran/trans-expr.c (Revision 279405) +++ gcc/fortran/trans-expr.c (Arbeitskopie) @@ -9218,6 +9218,13 @@ gfc_trans_pointer_assignment (gfc_expr * expr1, gf break; rank_remap = (remap && remap->u.ar.end[0]); + if (remap && expr2->expr_type == EXPR_NULL) + { + gfc_error ("If bounds remapping is specified at %L, " + "the pointer target shall not be NULL", &expr1->where); + return NULL_TREE; + } + gfc_init_se (&lse, NULL); if (remap) lse.descriptor_only = 1; Index: gcc/testsuite/gfortran.dg/pr70853.f90 =================================================================== --- gcc/testsuite/gfortran.dg/pr70853.f90 (nicht existent) +++ gcc/testsuite/gfortran.dg/pr70853.f90 (Arbeitskopie) @@ -0,0 +1,8 @@ +! { dg-do compile } +! PR fortran/70853 +! Contributed by Gerhard Steinmetz +program p + real, pointer :: z(:) + z(1:2) => null() ! { dg-error "pointer target shall not be NULL" } + z(2:1) => null() ! { dg-error "pointer target shall not be NULL" } +end 2019-12-18 Harald Anlauf <anl...@gmx.de> PR fortran/92898 * trans-expr.c (gfc_trans_pointer_assignment): Reject bounds remapping if pointer target is NULL(). 2019-12-18 Harald Anlauf <anl...@gmx.de> PR fortran/70853 * gfortran.dg/pr70853.f90: New test.