re PR fortran/78719 ([F03] ICE in gfc_get_symbol_decl, at fortran/trans-decl.c:1438)
2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/78719 * decl.c (get_proc_name): Check for a CLASS entity when trying to add attributes to an entity that already has an explicit interface. 2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/78719 * gfortran.dg/pr78719_1.f90: New test. * gfortran.dg/pr78719_2.f90: Ditto. * gfortran.dg/pr78719_3.f90: Ditto. From-SVN: r274604
This commit is contained in:
parent
4f81c2a3c5
commit
1c3925e32a
|
@ -1,3 +1,9 @@
|
||||||
|
2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/78719
|
||||||
|
* decl.c (get_proc_name): Check for a CLASS entity when trying to
|
||||||
|
add attributes to an entity that already has an explicit interface.
|
||||||
|
|
||||||
2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
|
2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||||
|
|
||||||
PR fortran/91471
|
PR fortran/91471
|
||||||
|
|
|
@ -1363,9 +1363,9 @@ get_proc_name (const char *name, gfc_symbol **result, bool module_fcn_entry)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Trap declarations of attributes in encompassing scope. The
|
/* Trap declarations of attributes in encompassing scope. The
|
||||||
signature for this is that ts.kind is set. Legitimate
|
signature for this is that ts.kind is nonzero for no-CLASS
|
||||||
references only set ts.type. */
|
entity. For a CLASS entity, ts.kind is zero. */
|
||||||
if (sym->ts.kind != 0
|
if ((sym->ts.kind != 0 || sym->ts.type == BT_CLASS)
|
||||||
&& !sym->attr.implicit_type
|
&& !sym->attr.implicit_type
|
||||||
&& sym->attr.proc == 0
|
&& sym->attr.proc == 0
|
||||||
&& gfc_current_ns->parent != NULL
|
&& gfc_current_ns->parent != NULL
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/78719
|
||||||
|
* gfortran.dg/pr78719_1.f90: New test.
|
||||||
|
* gfortran.dg/pr78719_2.f90: Ditto.
|
||||||
|
* gfortran.dg/pr78719_3.f90: Ditto.
|
||||||
|
|
||||||
2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
|
2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||||
|
|
||||||
PR fortran/91471
|
PR fortran/91471
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
! { dg-do run }
|
||||||
|
! PR fortran/78719
|
||||||
|
! Code contributed by Gerhard Steinmetz
|
||||||
|
program p
|
||||||
|
|
||||||
|
type t
|
||||||
|
integer :: n
|
||||||
|
end type
|
||||||
|
|
||||||
|
abstract interface
|
||||||
|
subroutine h
|
||||||
|
end
|
||||||
|
end interface
|
||||||
|
|
||||||
|
procedure(h), pointer :: s
|
||||||
|
|
||||||
|
s => f
|
||||||
|
call s
|
||||||
|
s => g
|
||||||
|
call s
|
||||||
|
|
||||||
|
contains
|
||||||
|
|
||||||
|
subroutine f
|
||||||
|
end
|
||||||
|
|
||||||
|
subroutine g
|
||||||
|
end
|
||||||
|
end program p
|
|
@ -0,0 +1,32 @@
|
||||||
|
! { dg-do compile }
|
||||||
|
! PR fortran/78719
|
||||||
|
! Code contributed by Gerhard Steinmetz
|
||||||
|
program p
|
||||||
|
|
||||||
|
type t
|
||||||
|
integer :: n
|
||||||
|
end type
|
||||||
|
|
||||||
|
real :: g
|
||||||
|
|
||||||
|
abstract interface
|
||||||
|
subroutine h
|
||||||
|
end
|
||||||
|
end interface
|
||||||
|
|
||||||
|
procedure(h), pointer :: s
|
||||||
|
|
||||||
|
s => f
|
||||||
|
call s
|
||||||
|
s => g ! { dg-error "Invalid procedure pointer" }
|
||||||
|
call s
|
||||||
|
|
||||||
|
contains
|
||||||
|
|
||||||
|
subroutine f
|
||||||
|
end
|
||||||
|
|
||||||
|
subroutine g ! { dg-error "has an explicit interface" }
|
||||||
|
end
|
||||||
|
|
||||||
|
end program p ! { dg-error "Syntax error" }
|
|
@ -0,0 +1,32 @@
|
||||||
|
! { dg-do compile }
|
||||||
|
! PR fortran/78719
|
||||||
|
! Code contributed by Gerhard Steinmetz
|
||||||
|
program p
|
||||||
|
|
||||||
|
type t
|
||||||
|
integer :: n
|
||||||
|
end type
|
||||||
|
|
||||||
|
class(t) :: g ! { dg-error "must be dummy, allocatable or pointer" }
|
||||||
|
|
||||||
|
abstract interface
|
||||||
|
subroutine h
|
||||||
|
end
|
||||||
|
end interface
|
||||||
|
|
||||||
|
procedure(h), pointer :: s
|
||||||
|
|
||||||
|
s => f
|
||||||
|
call s
|
||||||
|
s => g ! { dg-error "Invalid procedure pointer" }
|
||||||
|
call s
|
||||||
|
|
||||||
|
contains
|
||||||
|
|
||||||
|
subroutine f
|
||||||
|
end
|
||||||
|
|
||||||
|
subroutine g ! { dg-error "has an explicit interface" }
|
||||||
|
end
|
||||||
|
|
||||||
|
end program p ! { dg-error "Syntax error" }
|
Loading…
Reference in New Issue