The only change I can get working (i.e avoid compile errors) is to split petscvecmod.F90 into 2 source files - but I don't know if this will help with xlf..
My [partial] change is in branch balay/reorg-f90-for-xlf Satish On Wed, 3 Mar 2021, Satish Balay via petsc-dev wrote: > On Wed, 3 Mar 2021, Satish Balay via petsc-dev wrote: > > > Sure - once any change works locally [for gcc and xlf] > > > > When I try - I get a bunch of errors.. [yet to digest them.] > > > > >>> Can you please give the following source code workaround a try? > > > >>> Since there is already "use petscvecdefdummy" at the module scope, > > > >>> one workaround might be to remove the unnecessary "use > > > >>> petscvecdefdummy" in vecnotequal and vecequals > > > >>> and all similar procedures. > > > >>> > > > >>> For example, the test case has: > > > >>> module petscvecdef > > > >>> use petscvecdefdummy > > > >>> ... > > > >>> function vecnotequal(A,B) > > > >>> use petscvecdefdummy > > > >>> logical vecnotequal > > > >>> type(tVec), intent(in) :: A,B > > > >>> vecnotequal = (A%v .ne. B%v) > > > >>> end function > > > Ok - try this suggestion: > > diff --git a/src/vec/f90-mod/petscvecmod.F90 b/src/vec/f90-mod/petscvecmod.F90 > index 0c447156b9..81968c7ca1 100644 > --- a/src/vec/f90-mod/petscvecmod.F90 > +++ b/src/vec/f90-mod/petscvecmod.F90 > @@ -77,7 +77,6 @@ > use petscvecdefdummy > interface operator(.ne.) > function vecnotequal(A,B) > - use petscvecdefdummy > logical vecnotequal > type(tVec), intent(in) :: A,B > end function > > > >>>>> > FC arch-linux-c-debug/obj/vec/f90-mod/petscvecmod.o > /home/balay/petsc/src/vec/f90-mod/petscvecmod.F90:81:22: > > 81 | type(tVec), intent(in) :: A,B > | 1 > Error: Derived type ‘tvec’ at (1) is being used before it is defined > /home/balay/petsc/include/../src/vec/f90-mod/ftn-auto-interfaces/petscis.h90:2:10: > > 2 | use petscvecdef > | 1 > Fatal Error: Cannot open module file ‘petscvecdef.mod’ for reading at (1): No > such file or directory > <<<<<< > > Satish
