diff options
author | Oleg Endo <olegendo@gcc.gnu.org> | 2012-10-04 18:32:20 +0000 |
---|---|---|
committer | Oleg Endo <olegendo@gcc.gnu.org> | 2012-10-04 18:32:20 +0000 |
commit | 8608637610bbff2401fae51ca84c4b909c48bc33 (patch) | |
tree | 401ada21f13763d09c9aafd4f4a2d264aab2063c /gcc | |
parent | 226a0af83759b5b6133c233f3e467e2183dc8fcc (diff) | |
download | gcc-8608637610bbff2401fae51ca84c4b909c48bc33.zip gcc-8608637610bbff2401fae51ca84c4b909c48bc33.tar.gz gcc-8608637610bbff2401fae51ca84c4b909c48bc33.tar.bz2 |
re PR target/33135 ([SH] -ffinite-math-only should not be on by default)
PR target/33135
* config/sh/t-sh (HOST_LIBGCC2_CFLAGS): Delete.
* config/sh/t-netbsd (HOST_LIBGCC2_CFLAGS): Delete.
* config/sh/t-linux (HOST_LIBGCC2_CFLAGS): Remove mieee option.
From-SVN: r192097
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/sh/sh.md | 43 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/sh/pr52933-1.c | 2 |
2 files changed, 35 insertions, 10 deletions
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index 7a1c4d3..6a61984 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -835,9 +835,13 @@ (define_insn_and_split "*cmp_div0s_1" [(set (match_operand:SI 0 "arith_reg_dest" "") - (ge:SI (xor:SI (match_operand:SI 1 "arith_reg_operand" "") - (match_operand:SI 2 "arith_reg_operand" "")) - (const_int 0))) +;; (ge:SI (xor:SI (match_operand:SI 1 "arith_reg_operand" "") +;; (match_operand:SI 2 "arith_reg_operand" "")) +;; (const_int 0))) + (xor:SI (lshiftrt:SI (match_operand:SI 1 "arith_reg_operand") + (const_int 31)) + (ge:SI (match_operand:SI 2 "arith_reg_operand") + (const_int 0)))) (clobber (reg:SI T_REG))] "TARGET_SH1" "#" @@ -853,9 +857,13 @@ (define_insn_and_split "*cmp_div0s_1" [(set (reg:SI T_REG) - (ge:SI (xor:SI (match_operand:SI 0 "arith_reg_operand" "") - (match_operand:SI 1 "arith_reg_operand" "")) - (const_int 0)))] +;; (ge:SI (xor:SI (match_operand:SI 0 "arith_reg_operand" "") +;; (match_operand:SI 1 "arith_reg_operand" "")) +;; (const_int 0)))] + (eq:SI (lshiftrt:SI (match_operand:SI 0 "arith_reg_operand") + (const_int 31)) + (ge:SI (match_operand:SI 1 "arith_reg_operand") + (const_int 0))))] "TARGET_SH1" "#" "&& can_create_pseudo_p ()" @@ -1002,9 +1010,13 @@ (define_insn_and_split "*cbranch_div0s" [(set (pc) - (if_then_else (ge (xor:SI (match_operand:SI 0 "arith_reg_operand" "") - (match_operand:SI 1 "arith_reg_operand" "")) - (const_int 0)) +;; (if_then_else (ge (xor:SI (match_operand:SI 0 "arith_reg_operand" "") +;; (match_operand:SI 1 "arith_reg_operand" "")) +;; (const_int 0)) + (if_then_else (eq (lshiftrt:SI (match_operand:SI 0 "arith_reg_operand") + (const_int 31)) + (ge:SI (match_operand:SI 1 "arith_reg_operand") + (const_int 0))) (label_ref (match_operand 2)) (pc))) (clobber (reg:SI T_REG))] @@ -10669,6 +10681,19 @@ label: DONE; }) +;; The *cstoresi pattern is for combine, so that it can apply some +;; comparison canonicalization if it hasn't been done before. +(define_insn_and_split "*cstoresi" + [(set (match_operand:SI 0 "arith_reg_dest") + (ge:SI (match_operand:SI 1 "arith_reg_operand") + (const_int 0))) + (clobber (reg:SI T_REG))] + "TARGET_SH1" + "#" + "&& 1" + [(set (reg:SI T_REG) (ge:SI (match_dup 1) (const_int 0))) + (set (match_dup 0) (reg:SI T_REG))]) + (define_expand "cstoredi4" [(set (match_operand:SI 0 "register_operand" "=r") (match_operator:SI 1 "comparison_operator" diff --git a/gcc/testsuite/gcc.target/sh/pr52933-1.c b/gcc/testsuite/gcc.target/sh/pr52933-1.c index 037f916..4f2dc98 100644 --- a/gcc/testsuite/gcc.target/sh/pr52933-1.c +++ b/gcc/testsuite/gcc.target/sh/pr52933-1.c @@ -8,7 +8,7 @@ /* { dg-final { scan-assembler-times "div0s" 25 } } */ /* { dg-final { scan-assembler-not "tst" } } */ -typedef unsigned char bool; +// typedef unsigned char bool; int other_func_a (int, int); int other_func_b (int, int); |