This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
Re: Gcj 3.0 on Itanium, again
- To: "Boehm, Hans" <hans_boehm at hp dot com>
- Subject: Re: Gcj 3.0 on Itanium, again
- From: Alexandre Petit-Bianco <apbianco at cygnus dot com>
- Date: Wed, 16 May 2001 16:12:36 -0700 (PDT)
- Cc: "'java at gcc dot gnu dot org'" <java at gcc dot gnu dot org>
- References: <140D21516EC2D3119EE7009027876644049B5E08@hplex1.hpl.hp.com>
- Reply-To: apbianco at cygnus dot com
Boehm, Hans writes:
> 1) gcj --main=hello hello.java dies with an ICE at dwarf2out.c:4652.
> This goes away with -O (as expected, I guess). This sounds
> familiar. Is it still expected?
I've been seing a similar problem with Alpha. In my case, I noticed
that it occurs only if -g1 is passed down to jc1. I can build and test
things with alpha using with -g0 or -g<n>, n >= 2 and yes it also goes
away when using -O. Below is what I wrote as I was trying to give it a
(unsuccessful) shot last week.
./A
-g1 triggers an ICE in splice_child_die, -g0, -g>=2 don't. I've been
trying to track things a bit, but I couldn't see anything obviously
wrong (I have zero knowledge on dwarf2out.*)
Here's what I see when compiling `class X {}'. -g1 gets passed by
default to jc1. With -g1, member functions get registered in
decl_die_table (it doesn't seem to happen for g0 and g>=2.) Latter on
in gen_member_die, when considering member functions, lookup_decl_die
will return a non null child and therefore call splice_child_die which
aborts here:
if (child->die_parent != parent
&& child->die_parent != get_AT_ref (parent, DW_AT_specification))
abort ();
I don't know what's really wrong here. child->die_parent != parent or
the fact that the `parent' doesn't feature the DW_AT_specification
(returning NULL which doesn't compare against a non null child->die_parent.)