aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
authorVolker Reichelt <reichelt@igpm.rwth-aachen.de>2005-07-27 08:30:46 +0000
committerVolker Reichelt <reichelt@gcc.gnu.org>2005-07-27 08:30:46 +0000
commit6a28f513f101340c99203a5290501c787833b205 (patch)
tree72122f8156e77bc3684060fea90f41120ca52b61 /gcc/fortran/resolve.c
parent2350455936313427a68eb1e0245a5e49d5ea8165 (diff)
downloadgcc-6a28f513f101340c99203a5290501c787833b205.zip
gcc-6a28f513f101340c99203a5290501c787833b205.tar.gz
gcc-6a28f513f101340c99203a5290501c787833b205.tar.bz2
re PR fortran/22503 (Suggest to use .EQV. when comparing logicals with .EQ.)
PR fortran/22503 * resolve.c (resolve_operator): Improve diagnostic for comparison of logicals with invalid operator. * gfortran.dg/logical_comp.f90: New test. From-SVN: r102417
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r--gcc/fortran/resolve.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index ff2ac56..8718f4d 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -1514,9 +1514,14 @@ resolve_operator (gfc_expr * e)
break;
}
- sprintf (msg, "Operands of comparison operator '%s' at %%L are %s/%s",
- gfc_op2string (e->value.op.operator), gfc_typename (&op1->ts),
- gfc_typename (&op2->ts));
+ if (op1->ts.type == BT_LOGICAL && op2->ts.type == BT_LOGICAL)
+ sprintf (msg, "Logicals at %%L must be compared with %s instead of %s",
+ e->value.op.operator == INTRINSIC_EQ ? ".EQV." : ".NEQV.",
+ gfc_op2string (e->value.op.operator));
+ else
+ sprintf (msg, "Operands of comparison operator '%s' at %%L are %s/%s",
+ gfc_op2string (e->value.op.operator), gfc_typename (&op1->ts),
+ gfc_typename (&op2->ts));
goto bad_op;