This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/41784] [OOP] ICE in load_derived_extensions
- From: "mikael at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 23 Oct 2009 17:17:53 -0000
- Subject: [Bug fortran/41784] [OOP] ICE in load_derived_extensions
- References: <bug-41784-9410@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #10 from mikael at gcc dot gnu dot org 2009-10-23 17:17 -------
(In reply to comment #9)
> Now here we may need:
>
> if (p == NULL)
> {
> skip_list ();
> continue;
> }
skip_list() is unnecessary here as we have parsed everything already and the
locus is on the closing parenthesis. However, mio_rparen() is needed so that we
do not miss any parenthesis (this is also the case without skip_list).
The unformatted patch should look like this (it fixes the reduced testcase, but
not tested further) :
Index: module.c
===================================================================
--- module.c (revision 153473)
+++ module.c (working copy)
@@ -4008,6 +4008,7 @@
nuse = number_use_names (name, false);
j = 1;
p = find_use_name_n (name, &j, false);
+ if (p) {
st = gfc_find_symtree (gfc_current_ns->sym_root, p);
dt = st->n.sym;
st = gfc_find_symtree (derived->f2k_derived->sym_root, name);
@@ -4019,6 +4020,7 @@
st->n.sym = dt;
st->n.sym->refs++;
}
+ }
mio_rparen ();
}
mio_rparen ();
> BTW, is there any good reason why 'p' is NULL?
B is not imported (or use-associated in the fortran jargon)
NB : skip_list() wouldn't work anyway because it stops when the level variable
is 0 (see the code). The character under the locus _shall_ be an opening
parenthesis at the time skip_list() is called.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41784