OSDN Git Service

PR target/33135
authorolegendo <olegendo@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 4 Oct 2012 18:32:20 +0000 (18:32 +0000)
committerolegendo <olegendo@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 4 Oct 2012 18:32:20 +0000 (18:32 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@192097 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/config/sh/sh.md
gcc/testsuite/gcc.target/sh/pr52933-1.c
libgcc/ChangeLog
libgcc/config/sh/t-linux
libgcc/config/sh/t-netbsd
libgcc/config/sh/t-sh

index 7a1c4d3..6a61984 100644 (file)
 
 (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"
   "#"
 
 (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 ()"
 
 (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"
index 037f916..4f2dc98 100644 (file)
@@ -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);
index 683d2d1..693f395 100644 (file)
@@ -1,3 +1,10 @@
+2012-10-04  Oleg Endo  <olegendo@gcc.gnu.org>
+
+       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.
+
 2012-10-03  Oleg Endo  <olegendo@gcc.gnu.org>
 
        PR target/50457
index 60dee8d..d316db9 100644 (file)
@@ -2,7 +2,7 @@ LIB1ASMFUNCS_CACHE = _ic_invalidate _ic_invalidate_array
 
 LIB2ADD = $(srcdir)/config/sh/linux-atomic.c
 
-HOST_LIBGCC2_CFLAGS += -mieee -DNO_FPSCR_VALUES
+HOST_LIBGCC2_CFLAGS += -DNO_FPSCR_VALUES
 
 # Silence atomic built-in related warnings in linux-atomic.c.
 # Unfortunately the conflicting types warning can't be disabled selectively.
index 3c5739e..93fe287 100644 (file)
@@ -1,3 +1,2 @@
 LIB1ASMFUNCS_CACHE = _ic_invalidate
 
-HOST_LIBGCC2_CFLAGS += -mieee
index efbaff8..61cfe79 100644 (file)
@@ -59,5 +59,3 @@ div_table-4-300.o: $(srcdir)/config/sh/lib1funcs-4-300.S
 libgcc-4-300.a: div_table-4-300.o
        $(AR_CREATE_FOR_TARGET) $@ div_table-4-300.o
 
-HOST_LIBGCC2_CFLAGS += -mieee
-