[Bug fortran/41242] [4.5 Regression] PPC call rejected (related to user-defined assignment?)
janus at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Thu Sep 10 21:09:00 GMT 2009
------- Comment #16 from janus at gcc dot gnu dot org 2009-09-10 21:09 -------
Ok, here goes an extended patch which fixes the testsuite regressions:
Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c (revision 151596)
+++ gcc/fortran/resolve.c (working copy)
@@ -6958,7 +6958,6 @@ resolve_ordinary_assign (gfc_code *code,
&& (lhs->symtree->n.sym == (*rhsptr)->symtree->n.sym))
*rhsptr = gfc_get_parentheses (*rhsptr);
- resolve_code (code, ns);
return true;
}
@@ -7190,7 +7189,12 @@ resolve_code (gfc_code *code, gfc_namesp
break;
if (resolve_ordinary_assign (code, ns))
- goto call;
+ {
+ if (code->op == EXEC_COMPCALL)
+ goto compcall;
+ else
+ goto call;
+ }
break;
@@ -7241,6 +7245,7 @@ resolve_code (gfc_code *code, gfc_namesp
break;
case EXEC_COMPCALL:
+ compcall:
resolve_typebound_call (code);
break;
The problem with the two failing test cases was that after my removal of the
'resolve_code' line, type-bound assignment operators were still being
translated to generic TBP calls (EXPR_COMPCALL), but those were not resolved.
For non-typebound operators there was already a mechanism in place, which would
resolve the call that had been generated from an assignment statement (cf. the
"goto call" in resolve_code). My patch simply makes this mechanism work for
TBOs.
Regtesting now. Will commit if successful (as the patch was already
pre-approved by Paul).
--
janus at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |janus at gcc dot gnu dot org
|dot org |
Status|NEW |ASSIGNED
Last reconfirmed|2009-09-04 09:47:56 |2009-09-10 21:09:46
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41242
More information about the Gcc-bugs
mailing list