mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 05:30:24 +08:00
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:
parent
e9bd9f7d5d
commit
c60a84b86f
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
40
gcc/testsuite/gfortran.dg/unreferenced_use_assoc_1.f90
Normal file
40
gcc/testsuite/gfortran.dg/unreferenced_use_assoc_1.f90
Normal 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" } }
|
Loading…
x
Reference in New Issue
Block a user