This is the mail archive of the gcc-patches@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]
Other format: [Raw text]

Re: Libjava failures status


> > Jan -
> > 
> > 	I'm seeing a build problem in libjava now.  Could this be related to
> > your recent changes?
> ..
> > /louie/green/trunk/gcc/libjava/java/util/Stack.java: In method `java.util.Stack.pop()':
> > /louie/green/trunk/gcc/libjava/java/util/Stack.java:115: Missing REG_EH_REGION note in the end of bb 12
> > /louie/green/trunk/gcc/libjava/java/util/Stack.java:115: verify_flow_info failed
> Yes, it is definitly another problem of same class.
> I hope to fix it during weekend, but I am on the trip now so I am not
> quite sure I will be able to do so.
> 
> As temporary workaround it is possible to just disable the sanity check.
> If the abort prevents others from working, I can commit it to the tree
> till tuesday I will return.
Doing cvs diff showed that I forgot to send out one fix that is required
for i386 bootstrap, sorry.
It fixed peephole2, that, unlike try_split does not update EH notes.
The code is mostly identical to what try_split does so I am installing
it as obvious to allow bootstrap.

Bootstrapped/regtested i686 together with other patches yesterday.

OK for branch?

Fri Mar  8 21:08:52 CET 2002  Jan Hubicka  <jh@suse.cz>
	* recog.c (peephole2_optimize): Re-distribute EH edges.

Index: recog.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/recog.c,v
retrieving revision 1.139
diff -c -3 -p -r1.139 recog.c
*** recog.c	2002/03/03 21:09:46	1.139
--- recog.c	2002/03/08 20:04:32
*************** peephole2_optimize (dump_file)
*** 3054,3059 ****
--- 3054,3060 ----
  	    {
  	      rtx try;
  	      int match_len;
+ 	      rtx note;
  
  	      /* Record this insn.  */
  	      if (--peep2_current < 0)
*************** peephole2_optimize (dump_file)
*** 3105,3111 ****
  			   note = XEXP (note, 1))
  			switch (REG_NOTE_KIND (note))
  			  {
- 			  case REG_EH_REGION:
  			  case REG_NORETURN:
  			  case REG_SETJMP:
  			  case REG_ALWAYS_RETURN:
--- 3106,3111 ----
*************** peephole2_optimize (dump_file)
*** 3138,3143 ****
--- 3138,3164 ----
  		  /* Replace the old sequence with the new.  */
  		  try = emit_insn_after (try, peep2_insn_data[i].insn);
  		  delete_insn_chain (insn, peep2_insn_data[i].insn);
+ 
+ 		  /* Re-insert the EH_REGION notes.  */
+ 		  if (try == bb->end
+ 		      && (note = find_reg_note (peep2_insn_data[i].insn, 
+ 						REG_EH_REGION, NULL_RTX)))
+ 		    {
+ 		      rtx x;
+ 		      for (x = NEXT_INSN (peep2_insn_data[i].insn);
+ 			   x != NEXT_INSN (try); x = NEXT_INSN (x))
+ 			if (GET_CODE (x) == CALL_INSN
+ 			    || (flag_non_call_exceptions
+ 				&& may_trap_p (PATTERN (x))))
+ 			  REG_NOTES (x)
+ 			    = gen_rtx_EXPR_LIST (REG_EH_REGION,
+ 						 XEXP (note, 0),
+ 						 REG_NOTES (x));
+ 		    }
+ 		  /* Converting possibly trapping insn to non-trapping is
+ 		     possible.  Zap dummy outgoing edges.  */
+ 		  if (try == bb->end)
+ 		    purge_dead_edges (bb);
  
  #ifdef HAVE_conditional_execution
  		  /* With conditional execution, we cannot back up the


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