[Bug fortran/41587] [OOP] ICE with ALLOCATABLE CLASS components
burnus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Apr 23 12:59:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41587
--- Comment #8 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-04-23 12:59:24 UTC ---
(In reply to comment #7)
> As of yesterday, the testcase in comment #1 compiles and runs
> successfully. We now just need the error message for the original problem.
Untested patch:
--- a/gcc/fortran/decl.c
+++ b/gcc/fortran/decl.c
@@ -1626,5 +1626,8 @@ build_struct (const char *name, gfc_charlen *cl, gfc_expr
- if (c->attr.pointer)
+ if (c->attr.pointer
+ || (c->ts.type == BT_CLASS && CLASS_DATA (c)
+ && CLASS_DATA (c)->attr.class_pointer))
{
- if (c->as->type != AS_DEFERRED)
+ if ((c->ts.type == BT_CLASS && CLASS_DATA (c)->as->type != AS_DEFERRED)
+ || (c->ts.type != BT_CLASS && c->as->type != AS_DEFERRED))
{
@@ -1635,5 +1638,8 @@ build_struct (const char *name, gfc_charlen *cl, gfc_expr
}
- else if (c->attr.allocatable)
+ else if (c->attr.allocatable
+ || (c->ts.type == BT_CLASS && CLASS_DATA (c)
+ && CLASS_DATA (c)->attr.allocatable))
{
- if (c->as->type != AS_DEFERRED)
+ if ((c->ts.type == BT_CLASS && CLASS_DATA (c)->as->type != AS_DEFERRED)
+ || (c->ts.type != BT_CLASS && c->as->type != AS_DEFERRED))
{
More information about the Gcc-bugs
mailing list