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