diff options
author | Zhenqiang Chen <zhenqiang.chen@linaro.org> | 2014-11-17 06:03:07 +0000 |
---|---|---|
committer | Zhenqiang Chen <zqchen@gcc.gnu.org> | 2014-11-17 06:03:07 +0000 |
commit | f06cd23dc761a7769f8bdca26a42db59b71dec54 (patch) | |
tree | 6cfdb458bba92a9545deccf6b36dbf8290c4cc36 /gcc/expr.c | |
parent | 2d52a3a19d16f75e57f5278d722e227d29ba4d03 (diff) | |
download | gcc-f06cd23dc761a7769f8bdca26a42db59b71dec54.zip gcc-f06cd23dc761a7769f8bdca26a42db59b71dec54.tar.gz gcc-f06cd23dc761a7769f8bdca26a42db59b71dec54.tar.bz2 |
Makefile.in: Add ccmp.o.
2014-11-17 Zhenqiang Chen <zhenqiang.chen@linaro.org>
* Makefile.in: Add ccmp.o.
* ccmp.c: New file.
* ccmp.h: New file.
* expr.c: include "ccmp.h"
(expand_cond_expr_using_cmove): Handle VOIDmode.
(expand_expr_real_1): Try to expand ccmp.
From-SVN: r217641
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 14 |
1 files changed, 13 insertions, 1 deletions
@@ -81,6 +81,7 @@ along with GCC; see the file COPYING3. If not see #include "builtins.h" #include "tree-chkp.h" #include "rtl-chkp.h" +#include "ccmp.h" #ifndef STACK_PUSH_CODE #ifdef STACK_GROWS_DOWNWARD @@ -8062,7 +8063,9 @@ expand_cond_expr_using_cmove (tree treeop0 ATTRIBUTE_UNUSED, op00 = expand_normal (treeop0); op01 = const0_rtx; comparison_code = NE; - comparison_mode = TYPE_MODE (TREE_TYPE (treeop0)); + comparison_mode = GET_MODE (op00); + if (comparison_mode == VOIDmode) + comparison_mode = TYPE_MODE (TREE_TYPE (treeop0)); } if (GET_MODE (op1) != mode) @@ -9504,6 +9507,15 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode, /* Fallthru */ case GIMPLE_BINARY_RHS: ops.op1 = gimple_assign_rhs2 (g); + + /* Try to expand conditonal compare. */ + if (targetm.gen_ccmp_first) + { + gcc_checking_assert (targetm.gen_ccmp_next != NULL); + r = expand_ccmp_expr (g); + if (r) + break; + } /* Fallthru */ case GIMPLE_UNARY_RHS: ops.op0 = gimple_assign_rhs1 (g); |