re PR middle-end/25121 (libgcj misscompilation?)
authorAndrew Haley <aph@redhat.com>
Wed, 21 Dec 2005 16:52:13 +0000 (16:52 +0000)
committerAndrew Haley <aph@gcc.gnu.org>
Wed, 21 Dec 2005 16:52:13 +0000 (16:52 +0000)
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.

From-SVN: r108914

gcc/ChangeLog
gcc/recog.c

index 69ca302d6352e5d792ada19ce03f58a79911052e..7c04dfb7a2e0475774cbb794afc28e35792c2f59 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 1df4b7fd1dec9915cdd820ea2ddeff635c2e736e..8a3fe3506d2e4c7cb276c8f30d02e041e4a81307 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