Libjava failures status

Jan Hubicka jh@suse.cz
Fri Mar 8 12:11:00 GMT 2002


> > 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


More information about the Java mailing list

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