+2005-07-27 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR fortran/22503
+ * resolve.c (resolve_operator): Improve diagnostic for comparison
+ of logicals with invalid operator.
+
2005-07-25 Jakub Jelinek <jakub@redhat.com>
PR fortran/20063
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;
+2005-07-27 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR fortran/22503
+ * gfortran.dg/logical_comp.f90: New test.
+
2005-07-27 Jan Hubicka <jh@suse.cz>
* inliner-1.c: Add cleanup of dumps.
--- /dev/null
+! { dg-do compile }
+! PR fortran/22503
+! Suggest use of appropriate comparison operator
+
+program foo
+ logical :: b
+ b = b .eq. b ! { dg-error ".EQV. instead of .eq." }
+ b = b .ne. b ! { dg-error ".NEQV. instead of .ne." }
+end program