From patchwork Thu Dec 30 10:49:00 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [fortran] PR 45338 - ICE with user-defined operator Date: Thu, 30 Dec 2010 00:49:00 -0000 From: Thomas Koenig X-Patchwork-Id: 76965 Message-Id: <1293706140.3687.2.camel@linux-fd1f.site> To: fortran@gcc.gnu.org Cc: gcc-patches@gcc.gnu.org Hello world, the attached, fairly straightforward, patch fixes the PR. Regression-tested. OK for trunk? Thomas 2010-12-30 Thomas Koenig PR fortran/45338 * resolve.c (resolve_operator): Mark function for user-defined operator as referenced. 2010-12-30 Thomas Koenig PR fortran/45338 * gfortran.dg/userdef_operator_2.f90: New test case. Index: resolve.c =================================================================== --- resolve.c (Revision 168201) +++ resolve.c (Arbeitskopie) @@ -3793,9 +3793,12 @@ resolve_operator (gfc_expr *e) sprintf (msg, _("Operand of user operator '%s' at %%L is %s"), e->value.op.uop->name, gfc_typename (&op1->ts)); else - sprintf (msg, _("Operands of user operator '%s' at %%L are %s/%s"), - e->value.op.uop->name, gfc_typename (&op1->ts), - gfc_typename (&op2->ts)); + { + sprintf (msg, _("Operands of user operator '%s' at %%L are %s/%s"), + e->value.op.uop->name, gfc_typename (&op1->ts), + gfc_typename (&op2->ts)); + e->value.op.uop->op->sym->attr.referenced = 1; + } goto bad_op;