This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC 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]

[Bug libfortran/52087] New: program does not follow logical rules


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: unassigned@gcc.gnu.org
        ReportedBy: ryan.maclellan@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


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