This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

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


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]