From: John David Anglin Date: Sun, 24 Apr 2011 13:56:13 +0000 (+0000) Subject: re PR target/48288 (ld: Unsatisfied symbol "__iordi3" in file /test/gnu/gcc/objdir... X-Git-Tag: releases/gcc-4.4.7~434 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0fc5883b2995378e2a2eb3bd3e74491c46429d1e;p=thirdparty%2Fgcc.git re PR target/48288 (ld: Unsatisfied symbol "__iordi3" in file /test/gnu/gcc/objdir/./gcc/libgcc_eh.a) 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f980537d577d..2e5a3592da2f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2011-04-24 John David Anglin + + 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 * config/pa/pa.h (REGISTER_MOVE_COST): Increase to 18 cost of diff --git a/gcc/config/pa/pa-protos.h b/gcc/config/pa/pa-protos.h index 7fc9dcad40f9..f0ce15fab0ca 100644 --- a/gcc/config/pa/pa-protos.h +++ b/gcc/config/pa/pa-protos.h @@ -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); diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index a2c3da0cce8e..ae29f609bd24 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -6136,7 +6136,7 @@ (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" "")))] "" " { @@ -6157,7 +6157,7 @@ (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") @@ -6176,19 +6176,14 @@ (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") diff --git a/gcc/config/pa/predicates.md b/gcc/config/pa/predicates.md index 2f2763c0a915..deca0f459f8c 100644 --- a/gcc/config/pa/predicates.md +++ b/gcc/config/pa/predicates.md @@ -410,11 +410,15 @@ ;; 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 <<