This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: g77 3.4.(2|3): Failure when calling gcc 3.4.(2|3) functions


At 03:46 PM 11/22/2004, Samuel Ziegler wrote:

The semantic change seems to deal with the short-circuiting of if
statements.  The G77 3.4.x behavior appears to be correct.  According to
this document:
http://www.ibiblio.org/pub/languages/fortran/ch1-8.html

I poked through the release notes, but didn't see anything about this
change.  Does this describe a change which occurred?

Here is a test program from my coworker:

g77 -fno-underscoring -g -fugly-logint fort2.f -o testcase

------fort2.f-------------------------

      integer function child()
        write (*, *) 'Gahh'
        child = 1
      end

      subroutine parent
      integer a
      integer child

a = 0

c     Is the second expression evaluated ?
c     G77 3.3 - Says no
c     G77 3.4 - Says yes
      if(a.eq.1.and.child().eq.1) then
c     do nothing
      endif

      return
      end


program testcase call parent end

-------- end fort2.f ---------------------

As your example shows, if you depend on undefined behavior, a change in the back end could change your results, even though no change was likely to have been made specifically to g77.



Tim Prince



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]