http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55501
Bug #: 55501 Summary: ICE using MERGE in constant expr Classification: Unclassified Product: gcc Version: 4.7.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassig...@gcc.gnu.org ReportedBy: lo...@cray.com Test (extracted from a larger module) > cat test2.f90 module test integer,parameter,private :: int32 = 4 integer,private,parameter :: dik = kind(0) ! Default Integer Kind type MPI_Datatype integer :: mpi_val end type type(MPI_Datatype),parameter,private :: MPIx_I4 = MPI_Datatype(4) type(MPI_Datatype),parameter,private :: MPIx_I8 = MPI_Datatype(8) type(MPI_Datatype),parameter :: MPI_INTEGER = merge(MPIx_I4, MPIx_I8, dik==int32) end module test > ftn -c test2.f90 f951: internal compiler error: in gfc_conv_structure, at fortran/trans-expr.c:5360 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. Also fails with 4.8. Allowing MERGE here is a F2003 feature (elemental intrinsic with constant arguments). In any case, the compiler should not abort. Compiles OK with Cray compiler.