]> 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>
Sat, 30 Apr 2011 00:15:43 +0000 (00:15 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Sat, 30 Apr 2011 00:15:43 +0000 (00:15 +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: r173199

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

index 4330a83ff4a0a4d81815afdf8131d5b7dca2f764..94ccb22622a1c095856f16f104150bc3cde556f4 100644 (file)
@@ -1,3 +1,13 @@
+2011-04-29  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-28  Richard Guenther  <rguenther@suse.de>
 
        * DEV-PHASE: Set back to prerelease.
index e71d8a1e82cb8b81a7dec0d4c97ddd11baaed798..170f577f9281e1bf94f44b29946758046e4f0d6b 100644 (file)
@@ -79,7 +79,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);
@@ -94,7 +93,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 (rtx[]);
 extern int emit_move_sequence (rtx *, enum machine_mode, rtx);
 extern int emit_hpdiv_const (rtx *, int);
index 2e732e68ae3dda0c7119ca43d083cabbf5bb0018..eecba75131e4d756653e427984defa21a90eb5aa 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 959dbdd009d359dd08a0851b8c8b1070ac60efed..902ef4f195c92ecda9c8e47248601cb58c117164 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 <<