[Patch, Fortran] PR 78573: [7 Regression] [OOP] ICE in resolve_component, at fortran/resolve.c:13405
Janus Weil
janus@gcc.gnu.org
Tue Nov 29 21:58:00 GMT 2016
Hi all,
here is a rather straightforward patch for an ice-on-invalid
regression. Regtests cleanly on x86_64-linux-gnu. Ok for trunk?
Cheers,
Janus
2016-11-29 Janus Weil <janus@gcc.gnu.org>
PR fortran/78573
* decl.c (build_struct): On error, return directly and do not build
class symbol.
2016-11-29 Janus Weil <janus@gcc.gnu.org>
PR fortran/78573
* gfortran.dg/class_61.f90: New test case.
-------------- next part --------------
Index: gcc/fortran/decl.c
===================================================================
--- gcc/fortran/decl.c (revision 242960)
+++ gcc/fortran/decl.c (working copy)
@@ -1850,7 +1850,6 @@ build_struct (const char *name, gfc_charlen *cl, g
{
gfc_state_data *s;
gfc_component *c;
- bool t = true;
/* F03:C438/C439. If the current symbol is of the same derived type that we're
constructing, it must have the pointer attribute. */
@@ -1952,7 +1951,7 @@ build_struct (const char *name, gfc_charlen *cl, g
{
gfc_error ("Pointer array component of structure at %C must have a "
"deferred shape");
- t = false;
+ return false;
}
}
else if (c->attr.allocatable)
@@ -1961,7 +1960,7 @@ build_struct (const char *name, gfc_charlen *cl, g
{
gfc_error ("Allocatable component of structure at %C must have a "
"deferred shape");
- t = false;
+ return false;
}
}
else
@@ -1970,20 +1969,15 @@ build_struct (const char *name, gfc_charlen *cl, g
{
gfc_error ("Array component of structure at %C must have an "
"explicit shape");
- t = false;
+ return false;
}
}
scalar:
if (c->ts.type == BT_CLASS)
- {
- bool t2 = gfc_build_class_symbol (&c->ts, &c->attr, &c->as);
+ return gfc_build_class_symbol (&c->ts, &c->attr, &c->as);
- if (t)
- t = t2;
- }
-
- return t;
+ return true;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: class_61.f90
Type: text/x-fortran
Size: 297 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20161129/cd8954b6/attachment.bin>
More information about the Fortran
mailing list