This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/54778] [OOP] an ICE on invalid OO code
- From: "janus at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 02 Oct 2012 16:12:50 +0000
- Subject: [Bug fortran/54778] [OOP] an ICE on invalid OO code
- Auto-submitted: auto-generated
- References: <bug-54778-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54778
janus at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |ASSIGNED
Keywords| |ice-on-invalid-code
Last reconfirmed| |2012-10-02
CC| |janus at gcc dot gnu.org
AssignedTo|unassigned at gcc dot |janus at gcc dot gnu.org
|gnu.org |
Ever Confirmed|0 |1
Summary|an ICE on invalid OO code |[OOP] an ICE on invalid OO
| |code
--- Comment #1 from janus at gcc dot gnu.org 2012-10-02 16:12:50 UTC ---
Thanks for reporting. I can reproduce this on 4.7 and trunk.
Here is a patch to fix it:
Index: gcc/fortran/interface.c
===================================================================
--- gcc/fortran/interface.c (revision 191869)
+++ gcc/fortran/interface.c (working copy)
@@ -3386,7 +3386,8 @@ matching_typebound_op (gfc_expr** tb_base,
if (base->expr->ts.type == BT_CLASS)
{
- if (CLASS_DATA (base->expr) == NULL)
+ if (CLASS_DATA (base->expr) == NULL
+ || !gfc_expr_attr (base->expr).class_ok)
continue;
derived = CLASS_DATA (base->expr)->ts.u.derived;
}
With this I get:
c0.f90:14.2:
function elem(this, i)
1
Error: CLASS variable 'elem' at (1) must be dummy, allocatable or pointer
c0.f90:18.4:
elem = this%elements(i)
1
Error: Variable must not be polymorphic in intrinsic assignment at (1) - check
that there is a matching specific subroutine for '=' operator
Regtesting now ...