Re: [petsc-dev] Need help with Fortran code/compiler issue
In my experience, "-Wmaybe-uninitialized" is a great way to generate false positive compiler warnings and nothing else. Jeff On Thu, Apr 7, 2016 at 11:46 AM, Barry Smith <[email protected]> wrote:
src/sys/classes/bag/f2003-src/fsrc/bagenum.F has the code fragment
Subroutine PetscBagRegisterEnum(bag,addr,FArray,def,n,h,ierr) use,intrinsic :: iso_c_binding implicit none
PetscBag bag character(*) n,h character(*) FArray(*) PetscEnum :: def PetscErrorCode,intent(out) :: ierr PetscReal addr(*)
Type(C_Ptr),Dimension(:),Pointer :: CArray character(kind=c_char),pointer :: nullc => null() PetscInt :: i,Len Character(kind=C_char,len=256),Dimension(:),Pointer::list1
do i=1,256 if (len_trim(Farray(i)) .eq. 0) then Len = i-1 goto 100 endif if (len_trim(Farray(i)) .gt. 255) then ierr = PETSC_ERR_ARG_OUTOFRANGE return endif enddo ierr = PETSC_ERR_ARG_OUTOFRANGE return
100 continue
Allocate(list1(Len),stat=ierr); Allocate(CArray(Len+1),stat=ierr) do i=1,Len list1(i) = trim(FArray(i))//C_NULL_CHAR enddo
CArray = (/(c_loc(list1(i)),i=1,Len),c_loc(nullc)/) call PetscBagRegisterEnumPrivate(bag,addr,CArray,def,n,h,ierr) DeAllocate(CArray) DeAllocate(list1) End Subroutine
which produces the following warning with one Fortran compiler:
/Users/petsc/petsc.clone-4/src/sys/objects/f2003-src/fsrc/optionenum.F:35:0:
CArray = (/(c_loc(list1(i)),i=1,Len),c_loc(nullc)/) ^ Warning: 'list1.data' may be used uninitialized in this function [-Wmaybe-uninitialized]
Do any Fortran programmers know if the code is correct or if this is an incorrect warning from the compiler?
Thanks
Barry
-- Jeff Hammond [email protected] http://jeffhammond.github.io/
participants (1)
-
Jeff Hammond