OSDN Git Service

2005-12-21 Andrew Haley <aph@redhat.com>
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Dec 2005 16:52:13 +0000 (16:52 +0000)
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Dec 2005 16:52:13 +0000 (16:52 +0000)
        PR middle-end/25121
        * recog.c (peephole2_optimize): Don't peephole any
        RTX_FRAME_RELATED_P insns.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108914 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/recog.c

index 69ca302..7c04dfb 100644 (file)
@@ -1,3 +1,9 @@
+2005-12-21  Andrew Haley  <aph@redhat.com>
+
+       PR middle-end/25121
+       * recog.c (peephole2_optimize): Don't peephole any
+       RTX_FRAME_RELATED_P insns.
+
 2005-12-21  Kazu Hirata  <kazu@codesourcery.com>
 
        * tree-data-ref.c (estimate_niter_from_size_of_data): Replace
index 1df4b7f..8a3fe35 100644 (file)
@@ -3104,8 +3104,18 @@ peephole2_optimize (FILE *dump_file ATTRIBUTE_UNUSED)
              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