diff options
author | Andrew Haley <aph@redhat.com> | 2005-12-21 16:52:13 +0000 |
---|---|---|
committer | Andrew Haley <aph@gcc.gnu.org> | 2005-12-21 16:52:13 +0000 |
commit | eead060a9971f96ae3dd21fc199f29f542b2e299 (patch) | |
tree | be1a84611d88b154d11e212d84f4f3ee47d83295 /gcc/recog.c | |
parent | 0dd4b47b7fc8c9f9296429d348ec64df5afeb35a (diff) | |
download | gcc-eead060a9971f96ae3dd21fc199f29f542b2e299.zip gcc-eead060a9971f96ae3dd21fc199f29f542b2e299.tar.gz gcc-eead060a9971f96ae3dd21fc199f29f542b2e299.tar.bz2 |
re PR middle-end/25121 (libgcj misscompilation?)
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
Diffstat (limited to 'gcc/recog.c')
-rw-r--r-- | gcc/recog.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/gcc/recog.c b/gcc/recog.c index 1df4b7f..8a3fe35 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 |