This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
Re: CVS gcc-3_0-branch libjava timing out, exception inthread "main"
- To: Mark Mitchell <mark at codesourcery dot com>
- Subject: Re: CVS gcc-3_0-branch libjava timing out, exception inthread "main"
- From: Andrew Haley <aph at cambridge dot redhat dot com>
- Date: Mon, 14 May 2001 18:49:53 +0100 (BST)
- Cc: tromey at redhat dot com, gbsadler1 at lcisp dot com, java at gcc dot gnu dot org,gcc at gcc dot gnu dot org
- References: <871ypsx1ye.fsf@creche.redhat.com><20010513235900W.mitchell@codesourcery.com>
Mark Mitchell writes:
> >>>>> "Tom" == Tom Tromey <tromey@redhat.com> writes:
>
> Gordon> As of last night's changes to eh, I've got a frozen
> Gordon> lt-Divide_1.
>
> Tom> Yes, this is a known problem with the EH code. However, I
> Tom> believe we have a fix for it on the trunk. So it is just a
> Tom> matter of pulling that fix over.
>
> Would you mind identifying the fix and apply it to the branch as soon
> as possible?
Done it.
Andrew.
2001-04-30 Andrew Haley <aph@cambridge.redhat.com>
* libgcj.spec.in (jc1): Add EXCEPTIONSPEC.
* configure.host (EXCEPTIONSPEC): New.
* configure.in (EXCEPTIONSPEC): New.
* configure: Rebuilt.
Index: configure.host
===================================================================
RCS file: /cvs/gcc/gcc/libjava/configure.host,v
retrieving revision 1.17
diff -p -2 -c -r1.17 configure.host
*** configure.host 2001/04/02 19:51:40 1.17
--- configure.host 2001/04/30 14:54:13
*************** echo "$target"
*** 46,49 ****
--- 46,50 ----
DIVIDESPEC=-fuse-divide-subroutine
+ EXCEPTIONSPEC=-fnon-call-exceptions
case "${host}" in
Index: configure.in
===================================================================
RCS file: /cvs/gcc/gcc/libjava/configure.in,v
retrieving revision 1.80
diff -p -2 -c -r1.80 configure.in
*** configure.in 2001/04/26 04:29:57 1.80
--- configure.in 2001/04/30 14:54:13
*************** AC_SUBST(ZDEPS)
*** 634,637 ****
--- 634,638 ----
AC_SUBST(ZINCS)
AC_SUBST(DIVIDESPEC)
+ AC_SUBST(EXCEPTIONSPEC)
AM_CONDITIONAL(CANADIAN, test "$CANADIAN" = yes)
Index: libgcj.spec.in
===================================================================
RCS file: /cvs/gcc/gcc/libjava/libgcj.spec.in,v
retrieving revision 1.15
diff -p -2 -c -r1.15 libgcj.spec.in
*** libgcj.spec.in 2001/03/28 11:04:27 1.15
--- libgcj.spec.in 2001/04/30 14:54:13
***************
*** 7,11 ****
*lib: -lgcj -lm @GCSPEC@ @THREADSPEC@ @ZLIBSPEC@ @SYSTEMSPEC@ %(libgcc) %(libo
rig)
! *jc1: @DIVIDESPEC@ @JC1GCSPEC@
#
--- 7,11 ----
*lib: -lgcj -lm @GCSPEC@ @THREADSPEC@ @ZLIBSPEC@ @SYSTEMSPEC@ %(libgcc) %(libo
rig)
! *jc1: @DIVIDESPEC@ @JC1GCSPEC@ @EXCEPTIONSPEC@
#
2001-05-03 Andrew Haley <aph@cambridge.redhat.com>
* reload1.c (copy_eh_notes): New function.
(emit_input_reload_insns): Call it.
(emit_output_reload_insns): Call it.
Index: reload1.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/reload1.c,v
retrieving revision 1.263
diff -c -p -2 -r1.263 reload1.c
*** reload1.c 2001/04/03 15:05:24 1.263
--- reload1.c 2001/05/03 18:34:15
*************** static void move2add_note_store PARAMS
*** 455,458 ****
--- 455,459 ----
static void add_auto_inc_notes PARAMS ((rtx, rtx));
#endif
+ static void copy_eh_notes PARAMS ((rtx, rtx));
static HOST_WIDE_INT sext_for_mode PARAMS ((enum machine_mode,
HOST_WIDE_INT));
*************** emit_input_reload_insns (chain, rl, old,
*** 6573,6580 ****
}
/* End this sequence. */
*where = get_insns ();
end_sequence ();
!
/* Update reload_override_in so that delete_address_reloads_1
can see the actual register usage. */
--- 6574,6584 ----
}
+ if (flag_non_call_exceptions)
+ copy_eh_notes (insn, get_insns ());
+
/* End this sequence. */
*where = get_insns ();
end_sequence ();
!
/* Update reload_override_in so that delete_address_reloads_1
can see the actual register usage. */
*************** emit_output_reload_insns (chain, rl, j)
*** 6791,6794 ****
--- 6795,6801 ----
output_reload_insns[rl->opnum] = get_insns ();
+ if (flag_non_call_exceptions)
+ copy_eh_notes (insn, get_insns ());
+
end_sequence ();
}
*************** add_auto_inc_notes (insn, x)
*** 9439,9440 ****
--- 9446,9467 ----
}
#endif
+
+ /* Copy EH notes from an insn to its reloads. */
+ static void
+ copy_eh_notes (insn, x)
+ rtx insn;
+ rtx x;
+ {
+ rtx eh_note = find_reg_note (insn, REG_EH_REGION, NULL_RTX);
+ if (eh_note)
+ {
+ for (; x != 0; x = NEXT_INSN (x))
+ {
+ if (may_trap_p (PATTERN (x)))
+ REG_NOTES (x)
+ = gen_rtx_EXPR_LIST (REG_EH_REGION, XEXP (eh_note, 0),
+ REG_NOTES (x));
+ }
+ }
+ }
+
2001-04-27 Andrew Haley <aph@cambridge.redhat.com>
* emit-rtl.c (try_split): Copy EH notes to sequence.
Index: emit-rtl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/emit-rtl.c,v
retrieving revision 1.172
diff -c -2 -p -r1.172 emit-rtl.c
*** emit-rtl.c 2001/04/25 16:14:24 1.172
--- emit-rtl.c 2001/04/27 17:59:10
*************** try_split (pat, trial, last)
*** 2586,2590 ****
{
int i;
!
/* Avoid infinite loop if any insn of the result matches
the original pattern. */
--- 2586,2591 ----
{
int i;
! rtx eh_note;
!
/* Avoid infinite loop if any insn of the result matches
the original pattern. */
*************** try_split (pat, trial, last)
*** 2607,2610 ****
--- 2608,2624 ----
CALL_INSN_FUNCTION_USAGE (XVECEXP (seq, 0, i))
= CALL_INSN_FUNCTION_USAGE (trial);
+
+ /* Copy EH notes. */
+ if ((eh_note = find_reg_note (trial, REG_EH_REGION, NULL_RTX)))
+ for (i = 0; i < XVECLEN (seq, 0); i++)
+ {
+ rtx insn = XVECEXP (seq, 0, i);
+ if (GET_CODE (insn) == CALL_INSN
+ || (flag_non_call_exceptions
+ && may_trap_p (PATTERN (insn))))
+ REG_NOTES (insn)
+ = gen_rtx_EXPR_LIST (REG_EH_REGION, XEXP (eh_note, 0),
+ REG_NOTES (insn));
+ }
/* If there are LABELS inside the split insns increment the