]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/48288 (ld: Unsatisfied symbol "__iordi3" in file /test/gnu/gcc/objdir...
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>
Sun, 24 Apr 2011 13:56:13 +0000 (13:56 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Sun, 24 Apr 2011 13:56:13 +0000 (13:56 +0000)
PR target/48288
* config/pa/predicates.md (ior_operand): Delete predicate.
(cint_ior_operand, reg_or_cint_ior_operand): New predicates.
* config/pa/pa.md (iordi3): Use reg_or_cint_ior_operand predicate in
expander.  Use cint_ior_operand in unnamed insn.
(iorsi3): Likewise.
* config/pa/pa-protos.h (ior_operand): Delete declarations.

From-SVN: r172917

gcc/ChangeLog
gcc/config/pa/pa-protos.h
gcc/config/pa/pa.md
gcc/config/pa/predicates.md

index f980537d577d05843e9840efc8f2de622cff40e1..2e5a3592da2fdf1e5b5dcb037c358dc07ec31ed6 100644 (file)
@@ -1,3 +1,13 @@
+2011-04-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       PR target/48288
+       * config/pa/predicates.md (ior_operand): Delete predicate.
+       (cint_ior_operand, reg_or_cint_ior_operand): New predicates.
+       * config/pa/pa.md (iordi3): Use reg_or_cint_ior_operand predicate in
+       expander.  Use cint_ior_operand in unnamed insn.
+       (iorsi3): Likewise.
+       * config/pa/pa-protos.h (ior_operand): Delete declarations.
+
 2011-04-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
        * config/pa/pa.h (REGISTER_MOVE_COST): Increase to 18 cost of
index 7fc9dcad40f98770f5344f36d7ef4260977ccc53..f0ce15fab0cab5c4136b6fabb53d7f5d4b341512 100644 (file)
@@ -82,7 +82,6 @@ extern int move_src_operand (rtx, enum machine_mode);
 extern int prefetch_cc_operand (rtx, enum machine_mode);
 extern int prefetch_nocc_operand (rtx, enum machine_mode);
 extern int and_operand (rtx, enum machine_mode);
-extern int ior_operand (rtx, enum machine_mode);
 extern int arith32_operand (rtx, enum machine_mode);
 extern int uint32_operand (rtx, enum machine_mode);
 extern int reg_before_reload_operand (rtx, enum machine_mode);
@@ -97,7 +96,6 @@ extern int ireg_or_int5_operand (rtx, enum machine_mode);
 extern int fmpyaddoperands (rtx *);
 extern int fmpysuboperands (rtx *);
 extern int call_operand_address (rtx, enum machine_mode);
-extern int ior_operand (rtx, enum machine_mode);
 extern void emit_bcond_fp (enum rtx_code, rtx);
 extern int emit_move_sequence (rtx *, enum machine_mode, rtx);
 extern int emit_hpdiv_const (rtx *, int);
index a2c3da0cce8e3cc817250239fa876ae27493ae5d..ae29f609bd24c6da80e191f821c0b6dfc308854b 100644 (file)
 (define_expand "iordi3"
   [(set (match_operand:DI 0 "register_operand" "")
        (ior:DI (match_operand:DI 1 "register_operand" "")
-               (match_operand:DI 2 "ior_operand" "")))]
+               (match_operand:DI 2 "reg_or_cint_ior_operand" "")))]
   ""
   "
 {
 (define_insn ""
   [(set (match_operand:DI 0 "register_operand" "=r,r")
        (ior:DI (match_operand:DI 1 "register_operand" "0,0")
-               (match_operand:DI 2 "ior_operand" "M,i")))]
+               (match_operand:DI 2 "cint_ior_operand" "M,i")))]
   "TARGET_64BIT"
   "* return output_64bit_ior (operands); "
   [(set_attr "type" "binary,shift")
 (define_expand "iorsi3"
   [(set (match_operand:SI 0 "register_operand" "")
        (ior:SI (match_operand:SI 1 "register_operand" "")
-               (match_operand:SI 2 "arith32_operand" "")))]
+               (match_operand:SI 2 "reg_or_cint_ior_operand" "")))]
   ""
-  "
-{
-  if (! (ior_operand (operands[2], SImode)
-         || register_operand (operands[2], SImode)))
-    operands[2] = force_reg (SImode, operands[2]);
-}")
+  "")
 
 (define_insn ""
   [(set (match_operand:SI 0 "register_operand" "=r,r")
        (ior:SI (match_operand:SI 1 "register_operand" "0,0")
-               (match_operand:SI 2 "ior_operand" "M,i")))]
+               (match_operand:SI 2 "cint_ior_operand" "M,i")))]
   ""
   "* return output_ior (operands); "
   [(set_attr "type" "binary,shift")
index 2f2763c0a915770df271f4c6498b280699de0ab1..deca0f459f8c430fe9f02aebcff4b37b793033f1 100644 (file)
 
 ;; True iff depi can be used to compute (reg | OP).
 
-(define_predicate "ior_operand"
-  (match_code "const_int")
-{
-  return (GET_CODE (op) == CONST_INT && ior_mask_p (INTVAL (op)));
-})
+(define_predicate "cint_ior_operand"
+  (and (match_code "const_int")
+       (match_test "ior_mask_p (INTVAL (op))")))
+
+;; True iff OP can be used to compute (reg | OP).
+
+(define_predicate "reg_or_cint_ior_operand"
+  (ior (match_operand 0 "register_operand")
+       (match_operand 0 "cint_ior_operand")))
 
 ;; True iff OP is a CONST_INT of the forms 0...0xxxx or
 ;; 0...01...1xxxx. Such values can be the left hand side x in (x <<