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 <bsm...@mcs.anl.gov> 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
jeff.scie...@gmail.com
http://jeffhammond.github.io/

Reply via email to