LGTM. Thanks for the patch!

Tobias

PS: I assume, your patch also fixes the following test case, which also ICEs in gfc_trans_pointer_assignment:
integer, pointer, contiguous :: x(:)
nullify(x(1:1))
end

On 12/18/19 5:07 PM, Harald Anlauf wrote:
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.

Reply via email to