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

             Bug #: 52087
           Summary: program does not follow logical rules
    Classification: Unclassified
           Product: gcc
           Version: 4.4.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libfortran
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: ryan.maclel...@ua.edu


Created attachment 26549
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26549
minimal source code to reproduce bug (5 lines)

The following program tests if the input logical variable is a valid logical
variable.  It only behaves as expected if the two logical tests are separately
in () although from the order of operations I would expect it to work as is. 
Incidentally, if I make nt_save .false. or interchange the true and false in
the if statement it does work without the ().

does not write:
      program main

      logical*4 nt_save/.true./

      if ( nt_save.eqv..true. .or. nt_save.eqv..false. ) then
         write(*,*) nt_save
      endif
      end


does write with
      if ( (nt_save.eqv..true.) .or. (nt_save.eqv..false.) ) then

Reply via email to