------- Comment #6 from dir at lanl dot gov  2007-06-18 18:13 -------
> Now I don't know how the compiler is supposed to behave when there is a 
> mismatch between the arguments in the subroutines and their call.

I do - since the beginning of FORTRAN, well, at least since FORTRAN 2, it
simply passes the starting address down for simple data types. I have worked
several commercial finite element codes over the years and at least half of
them call routines with wrong data type for various reasons - to do extremely
efficient low cost dynamic memory management, to create objects, to overload
modules, to do multiple inheritance, etc... Fortran 90 has not always been
around to do these things legally.


That is all not relevant anyway, if you would look at the output, you would
realize that the only this wrong is that the loop -

      do 242 i=1,nvg
      j2=jj+iprec*(i-1)
c+---------------------------------------------------------------------+
c|                 multiply main diagonals by 2                        |
c+---------------------------------------------------------------------+
      jt=t(j2)
      tt=tt+tt
      t(j2)=jt
  242 jj=jj+iprec*i

does not compile correctly - The program prints the data before and after the
loop. If you look at the assembly language output for that loop, it is
incorrect for O2. I make a quick try at pulling it out of the routine, but that
fail - so I just submitted the whole routine as I had already spent several
hours eliminated the other 100,000 lines of code. 




-- 


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

Reply via email to