From b8475dd604f7461fef93b0fe2b9c52b4a6d206f0 Mon Sep 17 00:00:00 2001 From: "Steven G. Kargl" Date: Fri, 27 Jul 2007 16:59:32 +0000 Subject: [PATCH] re PR fortran/32899 (Broken diagnostic for invalid use of .eq. for logicals) 2007-07-26 Steven G. Kargl PR fortran/32899 * resolve.c (resolve_operator): Add INTRINSIC_EQ_OS comparison. 2007-07-26 Steven G. Kargl PR fortran/32899 * gfortran.dg/logical_comp.f90: Update dg-error strings. From-SVN: r126985 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/resolve.c | 5 +++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/logical_comp.f90 | 6 +++--- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 7759da7a6a2..1a17c519405 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2007-07-26 Steven G. Kargl + + PR fortran/32899 + * resolve.c (resolve_operator): Add INTRINSIC_EQ_OS comparison. + 2007-07-27 Jerry DeLisle Daniel Franke diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 7580d805e47..1a5c0011fd8 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -2830,8 +2830,9 @@ resolve_operator (gfc_expr *e) 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)); + (e->value.op.operator == INTRINSIC_EQ + || e->value.op.operator == INTRINSIC_EQ_OS) + ? ".eqv." : ".neqv.", gfc_op2string (e->value.op.operator)); else sprintf (msg, _("Operands of comparison operator '%s' at %%L are %s/%s"), diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index cdfbcb8ddcd..cc8cfc270d1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-07-26 Steven G. Kargl + + PR fortran/32899 + * gfortran.dg/logical_comp.f90: Update dg-error strings. + 2007-07-27 Jerry DeLisle PR fortran/32760 diff --git a/gcc/testsuite/gfortran.dg/logical_comp.f90 b/gcc/testsuite/gfortran.dg/logical_comp.f90 index 208cc4a9e66..bbf81260ba6 100644 --- a/gcc/testsuite/gfortran.dg/logical_comp.f90 +++ b/gcc/testsuite/gfortran.dg/logical_comp.f90 @@ -1,9 +1,9 @@ ! { dg-do compile } -! PR fortran/22503 +! PR fortran/22503, PR fortran/32899 ! 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." } + b = b .eq. b ! { dg-error "must be compared with" } + b = b .ne. b ! { dg-error "must be compared with" } end program