diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2014-11-21 15:33:27 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@gcc.gnu.org> | 2014-11-21 15:33:27 +0000 |
commit | de6fba39f3ad3790ba8efe47c764b5fe167155d3 (patch) | |
tree | 137a6922a0e69c0f98212f3b1b7adbf7f2e13d08 /gcc/optabs.c | |
parent | 4190ea38047f64e87940fc747d108a6bfdaa809f (diff) | |
download | gcc-de6fba39f3ad3790ba8efe47c764b5fe167155d3.zip gcc-de6fba39f3ad3790ba8efe47c764b5fe167155d3.tar.gz gcc-de6fba39f3ad3790ba8efe47c764b5fe167155d3.tar.bz2 |
re PR rtl-optimization/63952 (bootstrap failure (ICE in prepare_cmp_insn) on s390x in libjava)
PR rtl-optimization/63952
* optabs.c (prepare_cmp_insn): Do not call can_compare_p for CCmode.
* config/s390/s390.md ("cbranchcc4"): Accept any s390_comparison.
Remove incorrect TARGET_HARD_FLOAT check and no-op expander code.
From-SVN: r217929
Diffstat (limited to 'gcc/optabs.c')
-rw-r--r-- | gcc/optabs.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/optabs.c b/gcc/optabs.c index 35ee7ec..f8d584e 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -4167,8 +4167,11 @@ prepare_cmp_insn (rtx x, rtx y, enum rtx_code comparison, rtx size, if (GET_MODE_CLASS (mode) == MODE_CC) { - gcc_assert (can_compare_p (comparison, CCmode, ccp_jump)); - *ptest = gen_rtx_fmt_ee (comparison, VOIDmode, x, y); + enum insn_code icode = optab_handler (cbranch_optab, CCmode); + test = gen_rtx_fmt_ee (comparison, VOIDmode, x, y); + gcc_assert (icode != CODE_FOR_nothing + && insn_operand_matches (icode, 0, test)); + *ptest = test; return; } |