$ cat a.f90
module modA
implicit none
save
private
type, public :: typA
integer :: i
end type typA
type, public :: atom
type(typA), pointer :: ofTypA(:,:)
end type atom
end module modA
!!! re-name and re-export typA as typB:
module modB
use modA, only: typB => typA
implicit none
save
private
public typB
end module modB
!!! mixed used of typA and typeB:
module modC
use modB
implicit none
save
private
contains
subroutine buggy(a)
use modA, only: atom
! use modB, only: typB
! use modA, only: typA
implicit none
type(atom),intent(inout) :: a
target :: a
! *** end of interface ***
type(typB), pointer :: ofTypB(:,:)
! type(typA), pointer :: ofTypB(:,:)
integer :: i,j,k
ofTypB => a%ofTypA
a%ofTypA(i,j) = ofTypB(k,j)
end subroutine buggy
end module modC
$ gfortran -c a.f90
a.f90: In function buggy:
a.f90:47: internal compiler error: in fold_convert, at fold-const.c:2098
The backtrace is:
Breakpoint 1, fancy_abort (file=0x85d6e64 "../../../trunk/gcc/fold-const.c",
line=2098, function=0x85d6dda "fold_convert")
at ../../../trunk/gcc/diagnostic.c:641
641 {
(gdb) where
#0 fancy_abort (file=0x85d6e64 "../../../trunk/gcc/fold-const.c", line=2098,
function=0x85d6dda "fold_convert") at ../../../trunk/gcc/diagnostic.c:641
#1 0x082240be in fold_convert (type=0xb7be9508, arg=0xb7b960dc)
at ../../../trunk/gcc/fold-const.c:2098
#2 0x080beb27 in gfc_trans_scalar_assign (lse=0xbfc20674, rse=0xbfc2064c,
type=BT_DERIVED) at ../../../trunk/gcc/fortran/trans-expr.c:3064
#3 0x080c41ec in gfc_trans_assignment (expr1=0x873ffb0, expr2=0x8740af8)
at ../../../trunk/gcc/fortran/trans-expr.c:3253
#4 0x080c4449 in gfc_trans_assign (code=0x8740d50)
at ../../../trunk/gcc/fortran/trans-expr.c:3305
#5 0x080aa814 in gfc_trans_code (code=0x8740d50)
at ../../../trunk/gcc/fortran/trans.c:469
#6 0x080bc8de in gfc_generate_function_code (ns=0x873f9d8)
at ../../../trunk/gcc/fortran/trans-decl.c:2982
#7 0x080a9f48 in gfc_generate_module_code (ns=0x872a520)
at ../../../trunk/gcc/fortran/trans.c:685
#8 0x08088b20 in gfc_parse_file () at ../../../trunk/gcc/fortran/parse.c:3223
#9 0x080a991d in gfc_be_parse_file (set_yydebug=0)
at ../../../trunk/gcc/fortran/f95-lang.c:303
#10 0x0839d94a in toplev_main (argc=13, argv=0xbfc208f4)
at ../../../trunk/gcc/toplev.c:999
#11 0x080dd56f in main (argc=-1212544056, argv=0x0)
at ../../../trunk/gcc/main.c:35
--
Summary: ICE on reexport of renamed type
Product: gcc
Version: 4.2.0
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: fxcoudert at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28601