]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix several build errors for pdp11 target.
authorPaul Koning <pkoning@equallogic.com>
Wed, 20 Oct 2010 15:40:09 +0000 (15:40 +0000)
committerPaul Koning <pkoning@gcc.gnu.org>
Wed, 20 Oct 2010 15:40:09 +0000 (11:40 -0400)
* config/pdp11/pdp11.md (*cmpdf): Fix tstd operands.
(cbranchdf4): Conditional on TARGET_FPU.
(movdf): Ditto; correct alternatives check.
(movmemhi): Fix predicate and constraint.
* config/pdp11/pdp11.h (HARD_REGNO_MODE_OK): Handle 64 bit mode.

From-SVN: r165729

gcc/ChangeLog
gcc/config/pdp11/pdp11.h
gcc/config/pdp11/pdp11.md

index a10ba683fffc5f6f8177ca1d303d7509335ba637..a4a70f48dd4ce916648f13ddebeecb598b3bd1ea 100644 (file)
@@ -1,3 +1,12 @@
+2010-10-20  Paul Koning  <pkoning@equallogic.com>
+
+       Fix several build errors for pdp11 target.
+       * config/pdp11/pdp11.md (*cmpdf): Fix tstd operands.
+       (cbranchdf4): Conditional on TARGET_FPU.
+       (movdf): Ditto; correct alternatives check.
+       (movmemhi): Fix predicate and constraint.
+       * config/pdp11/pdp11.h (HARD_REGNO_MODE_OK): Handle 64 bit mode.
+
 2010-10-20  Richard Guenther  <rguenther@suse.de>
 
        PR lto/45667
index 2904acd960865b152a61e3d268c99c19904ee004..cdb631593f24cf6f7f76165bb85a175d30a1a4de 100644 (file)
@@ -224,7 +224,7 @@ extern const struct real_format pdp11_d_format;
 #define HARD_REGNO_MODE_OK(REGNO, MODE) \
 (((REGNO) < 8)?                                                \
   ((GET_MODE_BITSIZE(MODE) <= 16)                      \
-   || (GET_MODE_BITSIZE(MODE) == 32 && !((REGNO) & 1)))        \
+   || (GET_MODE_BITSIZE(MODE) >= 32 && !((REGNO) & 1)))        \
   :(MODE) == DFmode)
     
 
index 64d57e056b3976169cfe74d390ad8c40e1326b44..9ef1c4f6042db56a55d0cc509a2ba4efd3f77128 100644 (file)
@@ -1,6 +1,6 @@
 ;;- Machine description for the pdp11 for GNU C compiler
 ;; Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2004, 2005
-;; 2007, 2008 Free Software Foundation, Inc.
+;; 2007, 2008, 2010 Free Software Foundation, Inc.
 ;; Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
 
 ;; This file is part of GCC.
@@ -95,7 +95,7 @@
 {
   cc_status.flags = CC_IN_FPU;
   if (which_alternative == 0 || which_alternative == 2)
-    return \"{tstd|tstf} %0, %1\;cfcc\";
+    return \"{tstd|tstf} %0\;cfcc\";
   else
     return \"{cmpd|cmpf} %0, %1\;cfcc\";
 }"
                       [(cc0) (const_int 0)])
                      (label_ref (match_operand 3 "" ""))
                      (pc)))]
-  ""
+  "TARGET_FPU"
   "")
 
 (define_expand "cbranchhi4"
 ;; do we have to supply all these moves? e.g. to 
 ;; NO_LOAD_FPU_REGs ? 
 (define_insn "movdf"
-  [(set (match_operand:DF 0 "general_operand" "=a,fR,a,Q,m")
-        (match_operand:DF 1 "general_operand" "fFR,a,Q,a,m"))]
-  ""
-  "* if (which_alternative ==0)
+  [(set (match_operand:DF 0 "general_operand" "=a,fR,a,Q,g")
+        (match_operand:DF 1 "general_operand" "fFR,a,Q,a,g"))]
+  "TARGET_FPU"
+  "* if (which_alternative ==0 || which_alternative == 2)
        return \"ldd %1, %0\";
-     else if (which_alternative == 1)
+     else if (which_alternative == 1 || which_alternative == 3)
        return \"std %1, %0\";
      else 
        return output_move_quad (operands); "
 
 
 (define_insn "" ; "movmemhi"
-  [(set (mem:BLK (match_operand:HI 0 "general_operand" "=r,r"))
-       (mem:BLK (match_operand:HI 1 "general_operand" "r,r")))
-   (use (match_operand:HI 2 "arith_operand" "n,&r"))
+  [(set (mem:BLK (match_operand 0 "pmode_register_operand" "+r,r"))
+       (mem:BLK (match_operand 1 "pmode_register_operand" "+r,r")))
+   (use (match_operand:HI 2 "general_operand" "+n,&r"))
    (use (match_operand:HI 3 "immediate_operand" "i,i"))
    (clobber (match_scratch:HI 4 "=&r,X"))
    (clobber (match_dup 0))