aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-09-18 11:08:19 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-09-18 11:08:19 -0700
commitd340408c13f21efcbf7b012cfa7ccd3653b31281 (patch)
tree4c45aaf3ca9235ed0b2aeacb4d26f8fa29af56e9 /gcc/combine.c
parenta191f0ee83fb815187657cadac361e883f496f01 (diff)
downloadgcc-d340408c13f21efcbf7b012cfa7ccd3653b31281.zip
gcc-d340408c13f21efcbf7b012cfa7ccd3653b31281.tar.gz
gcc-d340408c13f21efcbf7b012cfa7ccd3653b31281.tar.bz2
* combine.c (try_combine): Allow split to create a single insn.
From-SVN: r36504
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index be73be3..07c7e67 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -2107,11 +2107,17 @@ try_combine (i3, i2, i1, new_direct_jump_p)
i3);
}
- if (m_split && GET_CODE (m_split) == SEQUENCE
- && XVECLEN (m_split, 0) == 2
- && (next_real_insn (i2) == i3
- || ! use_crosses_set_p (PATTERN (XVECEXP (m_split, 0, 0)),
- INSN_CUID (i2))))
+ if (m_split && GET_CODE (m_split) != SEQUENCE)
+ {
+ insn_code_number = recog_for_combine (&m_split, i3, &new_i3_notes);
+ if (insn_code_number >= 0)
+ newpat = m_split;
+ }
+ else if (m_split && GET_CODE (m_split) == SEQUENCE
+ && XVECLEN (m_split, 0) == 2
+ && (next_real_insn (i2) == i3
+ || ! use_crosses_set_p (PATTERN (XVECEXP (m_split, 0, 0)),
+ INSN_CUID (i2))))
{
rtx i2set, i3set;
rtx newi3pat = PATTERN (XVECEXP (m_split, 0, 1));