- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
MODULE H5S
INTEGER, PARAMETER :: HSIZE_T = 8
INTEGER, PARAMETER :: HID_T = 8
CONTAINS
SUBROUTINE h5screate_simple_f(rank, dims, space_id, hdferr, maxdims)
IMPLICIT NONE
INTEGER, INTENT(IN) :: rank
INTEGER(HSIZE_T), INTENT(IN) :: dims(rank)
INTEGER(HID_T), INTENT(OUT) :: space_id
INTEGER, INTENT(OUT) :: hdferr
INTEGER(HSIZE_T), OPTIONAL, INTENT(IN) :: maxdims(rank)
!*****
INTEGER(HSIZE_T), ALLOCATABLE, DIMENSION(:) :: f_maxdims
INTERFACE
INTEGER FUNCTION h5screate_simple_c(rank, dims, maxdims, space_id) BIND(C,NAME='h5screate_simple_c')
IMPORT :: HID_T, HSIZE_T
IMPLICIT NONE
INTEGER, INTENT(IN) :: rank
INTEGER(HSIZE_T), INTENT(IN) :: dims(rank)
INTEGER(HSIZE_T), DIMENSION(:),INTENT(IN) :: maxdims(rank)
INTEGER(HID_T), INTENT(OUT) :: space_id
END FUNCTION h5screate_simple_c
END INTERFACE
ALLOCATE (f_maxdims(rank), stat=hdferr)
IF (hdferr .NE. 0) THEN
hdferr = -1
RETURN
ENDIF
IF (PRESENT(maxdims)) THEN
f_maxdims = maxdims
ELSE
f_maxdims = dims
ENDIF
hdferr = h5screate_simple_c(rank, dims, f_maxdims, space_id)
DEALLOCATE(f_maxdims)
END SUBROUTINE h5screate_simple_f
END MODULE H5S
module fred
USE H5S
implicit none(type, external)
contains
subroutine hdf5_add_dset_1D_int( iarry )
integer, intent(in) :: iarry(:) ! 1d array to write
INTEGER(HID_T) :: dspace_id ! Dataspace identifier
integer :: error ! Error flag
CALL h5screate_simple_f( rank(iarry), shape(iarry,HSIZE_T), dspace_id, error) ! ICE
! CALL h5screate_simple_f( rank(iarry), shape(iarry,8), dspace_id, error) ! ICE
! CALL h5screate_simple_f( rank(iarry), shape(iarry,4), dspace_id, error) ! NO ICE ERROR 6633
! error #6633: The type of the actual argument differs from the type of the dummy argument.
! CALL h5screate_simple_f( rank(iarry), [5_HSIZE_T], dspace_id, error) ! ICE
end subroutine hdf5_add_dset_1D_int
end module fred
A complete source file that generates an ICE is attached, this is a cut down version from a real code that is running OK with ifort. The build was IFX debug. I have extracted an HDF5 routine to complete the reproducer. The bug is on line 52 or the variants in the lines that follow and seems to relate to passing shape. Any insights would be helpful.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Actually a release build gets the same ICE and I still get a couple of other ICEs for stuff I have reported for previous IFX versions. It is quite concerning that several iterations after IFORT was retired that is still the only compiler that we can use for production code. Enough said.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
this new thread reports a ICE passing RANK and I an now thinking that in fact my ICE is the same.....
Some Intel triage is required I feel.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
OK as a workaround I changed
rank(iarry)
to
int(rank(iarry))
IFX does not choke on that. Assigning e.g. J = rank(iarry) and passing J also works
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
A compiler bug report has been opened for it.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page