summaryrefslogtreecommitdiff
path: root/gcc/recog.c
diff options
context:
space:
mode:
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>2005-12-21 16:52:13 +0000
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>2005-12-21 16:52:13 +0000
commita4fcc300e2553e1d71e8de6705a9e88c07818151 (patch)
treebe1a84611d88b154d11e212d84f4f3ee47d83295 /gcc/recog.c
parent5f9acd886b17be8693b8c0b4591b274763915d33 (diff)
downloadgcc-a4fcc300e2553e1d71e8de6705a9e88c07818151.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108914 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/recog.c')
-rw-r--r--gcc/recog.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/gcc/recog.c b/gcc/recog.c
index 1df4b7fd1de..8a3fe3506d2 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -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