re PR fortran/92990 (INVALID code with NULLIFY – partially misleading error message "If bounds remapping is specified at (1), the pointer target shall not be NULL")
2019-12-21 Harald Anlauf <anlauf@gmx.de> PR fortran/92990 * match.c (gfc_match_nullify): Check for valid pointer object. Reject bounds remapping. PR fortran/92990 * gfortran.dg/pr92990.f90: New test. From-SVN: r279698
This commit is contained in:
parent
b1f16cae7d
commit
b5fd86aba8
4 changed files with 40 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
2019-12-21 Harald Anlauf <anlauf@gmx.de>
|
||||
|
||||
PR fortran/92990
|
||||
* match.c (gfc_match_nullify): Check for valid pointer object.
|
||||
Reject bounds remapping.
|
||||
|
||||
2019-12-21 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/92753
|
||||
|
|
|
@ -4588,6 +4588,23 @@ gfc_match_nullify (void)
|
|||
goto cleanup;
|
||||
}
|
||||
|
||||
/* Check for valid array pointer object. Bounds remapping is not
|
||||
allowed with NULLIFY. */
|
||||
if (p->ref)
|
||||
{
|
||||
gfc_ref *remap = p->ref;
|
||||
for (; remap; remap = remap->next)
|
||||
if (!remap->next && remap->type == REF_ARRAY
|
||||
&& remap->u.ar.type != AR_FULL)
|
||||
break;
|
||||
if (remap)
|
||||
{
|
||||
gfc_error ("NULLIFY does not allow bounds remapping for "
|
||||
"pointer object at %C");
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
/* build ' => NULL() '. */
|
||||
e = gfc_get_null_expr (&gfc_current_locus);
|
||||
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2019-12-21 Harald Anlauf <anlauf@gmx.de>
|
||||
|
||||
PR fortran/92990
|
||||
* gfortran.dg/pr92990.f90: New test.
|
||||
|
||||
2019-12-21 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/92753
|
||||
|
|
12
gcc/testsuite/gfortran.dg/pr92990.f90
Normal file
12
gcc/testsuite/gfortran.dg/pr92990.f90
Normal file
|
@ -0,0 +1,12 @@
|
|||
! { dg-do compile }
|
||||
! PR fortran/92990
|
||||
! Verify fix of error message for NULLIFY vs. pointer assignment (PR70853)
|
||||
program p
|
||||
integer, pointer :: x(:)
|
||||
type t
|
||||
integer, pointer :: y(:)
|
||||
end type t
|
||||
type(t) :: z
|
||||
nullify (x(1:2)) ! { dg-error "does not allow bounds remapping" }
|
||||
nullify (z%y(:)) ! { dg-error "does not allow bounds remapping" }
|
||||
end
|
Loading…
Add table
Reference in a new issue