CVS gcc-3_0-branch libjava timing out, exception inthread "main"

Andrew Haley aph@cambridge.redhat.com
Mon May 14 10:50:00 GMT 2001


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


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /