re PR fortran/31214 (User-defined operator using entry leads to ICE)

2007-04-07  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/31214
	* trans-decl.c (gfc_get_symbol_decl): Allow unreferenced use
	associated symbols.

2007-04-07  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/31424
	* gfortran.dg/unreferenced_use_assoc_1.f90: New test.

From-SVN: r123642
This commit is contained in:
Paul Thomas 2007-04-07 20:18:17 +00:00
parent e9bd9f7d5d
commit c60a84b86f
4 changed files with 53 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2007-04-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31214
* trans-decl.c (gfc_get_symbol_decl): Allow unreferenced use
associated symbols.
2007-04-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31293

View File

@ -873,7 +873,8 @@ gfc_get_symbol_decl (gfc_symbol * sym)
int byref;
gcc_assert (sym->attr.referenced
|| sym->ns->proc_name->attr.if_source == IFSRC_IFBODY);
|| sym->attr.use_assoc
|| sym->ns->proc_name->attr.if_source == IFSRC_IFBODY);
if (sym->ns && sym->ns->proc_name->attr.function)
byref = gfc_return_by_reference (sym->ns->proc_name);

View File

@ -1,3 +1,8 @@
2007-04-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31424
* gfortran.dg/unreferenced_use_assoc_1.f90: New test.
2007-04-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31293

View File

@ -0,0 +1,40 @@
! { dg-do compile }
! Tests the fix for PR31424.
!
module InternalCompilerError
type Byte
private
character(len=1) :: singleByte
end type
type (Byte) :: BytesPrototype(1)
type UserType
real :: r
end type
contains
function UserTypeToBytes(user) result (bytes)
type(UserType) :: user
type(Byte) :: bytes(size(transfer(user, BytesPrototype)))
bytes = transfer(user, BytesPrototype)
end function
subroutine DoSomethingWithBytes(bytes)
type(Byte), intent(in) :: bytes(:)
end subroutine
end module
program main
use InternalCompilerError
type (UserType) :: user
! The following line caused the ICE
call DoSomethingWithBytes( UserTypeToBytes(user) )
end program
! { dg-final { cleanup-modules "InternalCompilerError" } }