This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
RE: IA64 status
- To: "'Richard Henderson'" <rth at redhat dot com>, "Boehm, Hans" <hans_boehm at hp dot com>
- Subject: RE: IA64 status
- From: "Boehm, Hans" <hans_boehm at hp dot com>
- Date: Tue, 11 Sep 2001 16:39:08 -0700
- Cc: "'java at gcc dot gnu dot org'" <java at gcc dot gnu dot org>
As far as I can tell, what's happening is the following:
1) An rtl load instruction is generated to load a floating point constant.
It is viewed as being able to trap. The specific instruction in this case
is:
(insn 72 70 118 (set (reg:SF 360)
(mem/u/f:SF (reg/f:DI 361) 0)) -1 (nil)
(expr_list:REG_DEAD (reg/f:DI 361)
(expr_list:REG_EH_REGION (const_int 1 [0x1])
(expr_list:REG_EQUAL (const_double:SF (mem/u/f:SF
(symbol_ref/u:DI ("*.LC2")) 0) 0 [0x0] 1074653792 [0x400dea60] 0 [0x0])
(nil)))))
2) Presumably an "abnormal edge" corresponding to the exception edge is
inserted leaving this instruction.
3) This instruction (along with some other stuff) is deleted by
delete_dead_insn from reload (reload1.c:1067).
4) This causes fixup_abnormal_edges to get very confused, since there is now
an abnormal edge without a corresponding instruction that caould have
introduced it.
I have only encounted this on IA64 with Java code (SPECjbb in this case)
when compiling with -g, using the trunk. I don't see why this is limited to
IA64.
Unfortunately, I'm not sure how to fix this, i.e. exactly where things
should have gone differently. Advice is appreciated.
Thanks.
Hans
> -----Original Message-----
> From: Richard Henderson [mailto:rth@redhat.com]
> Sent: Thursday, September 06, 2001 2:21 AM
> To: Boehm, Hans
> Cc: 'java@gcc.gnu.org'
> Subject: Re: IA64 status
>
>
> On Wed, Sep 05, 2001 at 05:39:14PM -0700, Boehm, Hans wrote:
> > Any guess as to what's causing this? Should
> fixup_abnormal_edges be able to
> > handle this case, or is it getting fed garbage?
>
> It's being fed garbage. The case that routine is supposed
> to handle is reload emitting new insns.
>
>
> r~
>