PR middle-end/25121: [4.1/4.2 Regression] libgcj misscompilation? [Was Re: RFC: peephole vs RTX_FRAME_RELATED_P]

Andrew Haley aph@redhat.com
Tue Dec 20 19:33:00 GMT 2005


Richard Henderson writes:
 > On Tue, Dec 20, 2005 at 05:29:11PM +0000, Andrew Haley wrote:
 > > Oh, joy.  Now I have to figure out what peep2_current_count is doing...
 > 
 > Counting the number of sequential valid instructions in the buffer.
 > Reset it to zero when you find a frame insn.

Yes, I see.

Andrew.


2005-12-20  Andrew Haley  <aph@redhat.com>

	PR middle-end/25121
	* recog.c (peephole2_optimize): Don't peephole any
	RTX_FRAME_RELATED_P insns.

Index: recog.c
===================================================================
--- recog.c	(revision 108424)
+++ recog.c	(working copy)
@@ -3118,8 +3118,18 @@
 	      propagate_one_insn (pbi, insn);
 	      COPY_REG_SET (peep2_insn_data[peep2_current].live_before, live);
 
-	      /* Match the peephole.  */
-	      try = peephole2_insns (PATTERN (insn), insn, &match_len);
+	      if (RTX_FRAME_RELATED_P (insn))
+		{
+		  /* If an insn has RTX_FRAME_RELATED_P set, peephole
+		     substitution would lose the
+		     REG_FRAME_RELATED_EXPR that is attached.  */
+		  peep2_current_count = 0;
+		  try = NULL;
+		}
+	      else
+		/* Match the peephole.  */
+		try = peephole2_insns (PATTERN (insn), insn, &match_len);
+
 	      if (try != NULL)
 		{
 		  /* If we are splitting a CALL_INSN, look for the CALL_INSN



More information about the Java mailing list