re PR fortran/69398 ([OOP] ICE on class with duplicate dimension attribute specified)

2019-06-19  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/69398
	* decl.c (attr_decl): Check for duplicate DIMENSION attribute for a
	CLASS entity.

2019-06-19  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/69398
	* gfortran.dg/pr69398.f90: New test.

From-SVN: r272481
This commit is contained in:
Steven G. Kargl 2019-06-19 18:04:46 +00:00
parent ee3aab6826
commit c9935123ae
4 changed files with 31 additions and 0 deletions

View file

@ -1,3 +1,9 @@
2019-06-19 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/69398
* decl.c (attr_decl): Check for duplicate DIMENSION attribute for a
CLASS entity.
2019-06-19 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/87907

View file

@ -8372,6 +8372,15 @@ attr_decl1 (void)
to the first component, or '_data' field. */
if (sym->ts.type == BT_CLASS && sym->ts.u.derived->attr.is_class)
{
/* gfc_set_array_spec sets sym->attr not CLASS_DATA(sym)->attr. Check
for duplicate attribute here. */
if (CLASS_DATA(sym)->attr.dimension == 1 && as)
{
gfc_error ("Duplicate DIMENSION attribute at %C");
m = MATCH_ERROR;
goto cleanup;
}
if (!gfc_copy_attr (&CLASS_DATA(sym)->attr, &current_attr, &var_locus))
{
m = MATCH_ERROR;

View file

@ -1,3 +1,8 @@
2019-06-19 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/69398
* gfortran.dg/pr69398.f90: New test.
2019-06-19 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/87907

View file

@ -0,0 +1,11 @@
! { dg-do compile }
! PR fortran/69398
! Contributed by Gerhard Steinmetz
program p
type t
end type
class(t), allocatable :: z(:)
target :: z(:) ! { dg-error "Duplicate DIMENSION attribute" }
allocate (z(2))
end