This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libfortran/52087] program does not follow logical rules
- From: "sgk at troutmask dot apl.washington.edu" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 02 Feb 2012 02:10:04 +0000
- Subject: [Bug libfortran/52087] program does not follow logical rules
- Auto-submitted: auto-generated
- References: <bug-52087-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52087
--- Comment #3 from Steve Kargl <sgk at troutmask dot apl.washington.edu> 2012-02-02 02:10:04 UTC ---
On Thu, Feb 02, 2012 at 12:57:29AM +0000, ryan.maclellan at ua dot edu wrote:
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52087
>
> --- Comment #2 from Ryan MacLellan <ryan.maclellan at ua dot edu> 2012-02-02 00:57:29 UTC ---
> I believe precedence is as follows:
> arithmetic expressions evaluated first
> followed by relational operators
> followed by logical operators
>
> In this case I believe .eqv. are relational operators (equivalent to .eq.) and
> .or. is the logical operator. So the .or. should be evaluated last but it
> doesn't seem to be. If this is not the design precedence or .eqv. is not
> considered a relational operators then I may simply be in error. Otherwise I
> think this is a bug.
>
See Table 7.7 in the Fortran 2003 standard (Or your favorite
Fortran reference).
Table 7.7: Categories of operations and relative precedence
Category of operation Operators Precedence
Extension defined-unary-op Highest
Numeric ** .
Numeric * or / .
Numeric unary + or - .
Numeric binary + or - .
Character // .
Relational .EQ., .NE., .LT., .LE., .GT., .GE.,
==, /=, <, <=, >, >= .
Logical .NOT. .
Logical .AND. .
Logical .OR. .
Logical .EQV. or .NEQV. .
Extension defined-binary-op Lowest