[Bug tree-optimization/55022] [4.8 Regression] air.f90 is miscompliled with -m64 -O2 -fgraphite-identity after revision 190619

dominiq at lps dot ens.fr gcc-bugzilla@gcc.gnu.org
Thu Feb 7 14:58:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55022

Dominique d'Humieres <dominiq at lps dot ens.fr> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |NEW

--- Comment #11 from Dominique d'Humieres <dominiq at lps dot ens.fr> 2013-02-07 14:57:40 UTC ---
I have reduced botwall.f90 to

!*==BOTWALL.spg  processed by SPAG 6.55Dc at 09:26 on 23 Sep 2005
!
      SUBROUTINE BOTWALL(Spx,Epx,Apy,Mxpx,U1,U2,U3,U4,Iv)
      IMPLICIT REAL*8(A-H,O-Z)
      PARAMETER (NX=150,NY=150)
      DIMENSION U(NX,NY) , V(NX,NY) , RHO(NX,NY) , T(NX,NY) , E(NX,NY)
      DIMENSION AS1(NX) , AS2(NX) , AS3(NY) , AS4(NY) , NX1(NX) ,       &
     &          NY1(NX)
      DIMENSION NX2(NX) , NY2(NX) , SIG(NX) , P(NX,NY)
      DIMENSION U1(NX,NY) , U2(NX,NY) , U3(NX,NY) , U4(NX,NY)
      INTEGER Spx , Epx , Apy
      REAL*8 NX1 , NX2 , NY1 , NY2 , MINlet(NY)
      COMMON /BNDRY / U , V , P , RHO , T , E , AS1 , AS2 , AS3 , AS4 , &
     &                NX1 , NY1 , NX2 , NY2 , SIG , GMA , S0 , T0 , P0 ,&
     &                PE , HOO , RR , MINlet
!
      TWX_0 = 272.77
      E_0 = RR*TWX_0/(GMA-1.)
      R_0 = 1.0/(TWX_0*RR)
      A_0 = DSQRT(GMA*TWX_0*RR)
      DO i = Spx , Epx
!
! BOTTOM WALL CONDITIONS FOR SUBSONIC FLOW
!
         vn1 = U(i,Apy)*NX1(i) + V(i,Apy)*NY1(i)
         P(i,Apy) = P(i,Apy)/DEXP(GMA*vn1/AS1(i))
         U(i,Apy) = 0.0
         V(i,Apy) = 0.0
         T(i,Apy) = TWX_0
         RHO(i,Apy) = P(i,Apy)*R_0
         AS1(i) = A_0
         E(i,Apy) = E_0
         U1(i,Apy) = RHO(i,Apy)
         U2(i,Apy) = 0.0
         U3(i,Apy) = 0.0
         U4(i,Apy) = RHO(i,Apy)*E_0
      ENDDO
!      print *, U1(Spx:Epx,Apy)
!      print *, U2(Spx:Epx,Apy)
!      print *, U3(Spx:Epx,Apy)
!      print *, U4(Spx:Epx,Apy)
      print *, U1(Spx:Spx+4,Apy)
      print *, U2(Spx:Spx+4,Apy)
      print *, U3(Spx:Spx+4,Apy)
      print *, U4(Spx:Spx+4,Apy)
      stop
      CONTINUE
      END

With the following compilation (gfc: gcc 4.8 r195848, gfortran: 4.7.2)

gfc -c -O2 -fgraphite-identity air_main.f90
gfortran -c -O2 -fgraphite-identity topwall.f90
gfortran -c -O2 -fgraphite-identity botwall_db.f90
gfc air_main.o botwall_db.o topwall.o

I get

   1.2901579736800930        1.2901579736800932        1.2901579736800932      
 1.2901579736800932        1.2901579736800932     
   0.0000000000000000        0.0000000000000000        0.0000000000000000      
 0.0000000000000000        0.0000000000000000     
   0.0000000000000000        0.0000000000000000        0.0000000000000000      
 0.0000000000000000        0.0000000000000000     
   252499.99999999997        252500.00000000003        252500.00000000003      
 252500.00000000003        252500.00000000003     

If I use

gfc -c -O2 -fgraphite-identity botwall_db.f90
gfc air_main.o botwall_db.o topwall.o

I get

   1.2901579217165384        1.2000000476837158        1.2000000476837158      
 1.2000000476837158        1.2000000476837158     
   0.0000000000000000        6.5847860013093756E-016  -2.6339144005237502E-015 
 0.0000000000000000        7.7354314600658297E-015
   0.0000000000000000        2.3705229604713751E-014   2.3705229604713751E-014 
 2.3705229604713751E-014   2.6300466964223820E-014
   252500.00000000000        252500.00000000009        252500.00000000009      
 252500.00000000009        252500.00000000009     

(In reply to comment #9)
> I'm sorry, but the reporter is going to have to reduce this significantly
> before we can debug this.  This is a huge mess of spaghetti code with tons of
> global and common variables scattered throughout, as well as state being passed
> around in files.
>
> Dominique, please reduce this to the smallest amount of reproducible code, so
> we can attack this.  Avoid reading and writing to files (as I see, these have
> only a minimal amount of data anyhow), and global variables if at all possible.

Well, I am only the reporter. The code is not mine and this makes the task to
reduce it while keeping the wrong code quite difficult (and cumbersome). 

> Please only keep the code that is relevant to reproduce the problem.

I'll try to provide a self contained test, but not before the week-end.



More information about the Gcc-bugs mailing list