From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 315 invoked by alias); 6 Aug 2014 17:44:39 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 32723 invoked by uid 89); 6 Aug 2014 17:44:38 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.2 X-HELO: eggs.gnu.org Received: from eggs.gnu.org (HELO eggs.gnu.org) (208.118.235.92) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Wed, 06 Aug 2014 17:44:36 +0000 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XF4tK-00012M-Qq for gcc-patches@gcc.gnu.org; Wed, 06 Aug 2014 13:20:52 -0400 Received: from mx1.redhat.com ([209.132.183.28]:14144) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XF4tK-00012A-JU for gcc-patches@gcc.gnu.org; Wed, 06 Aug 2014 13:20:46 -0400 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s76HJj7K008260 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 6 Aug 2014 13:19:46 -0400 Received: from c64.redhat.com (vpn-239-139.phx2.redhat.com [10.3.239.139]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s76HJ2on030913; Wed, 6 Aug 2014 13:19:45 -0400 From: David Malcolm To: gcc-patches@gcc.gnu.org Cc: David Malcolm Subject: [PATCH 073/236] expmed.c: Use rtx_insn and rtx_code_label Date: Wed, 06 Aug 2014 17:44:00 -0000 Message-Id: <1407345815-14551-74-git-send-email-dmalcolm@redhat.com> In-Reply-To: <1407345815-14551-1-git-send-email-dmalcolm@redhat.com> References: <1407345815-14551-1-git-send-email-dmalcolm@redhat.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 209.132.183.28 X-IsSubscribed: yes X-SW-Source: 2014-08/txt/msg00683.txt.bz2 gcc/ * expmed.c (store_bit_field_using_insv): Strengthen local "last" from rtx to rtx_insn *. (store_bit_field_1): Likewise. (extract_bit_field_1): Likewise. (expand_mult_const): Likewise for local "insns". (expmed_mult_highpart): Strengthen local "label" from rtx to rtx_code_label *. (expand_smod_pow2): Likewise. (expand_sdiv_pow2): Likewise. (expand_divmod): Strengthen locals "last", "insn" from rtx to rtx_insn *. Strengthen locals "label", "label1", "label2", "label3", "label4", "label5", "lab" from rtx to rtx_code_label *. (emit_cstore): Strengthen local "last" from rtx to rtx_insn *. (emit_store_flag): Likewise. (emit_store_flag_force): Strengthen local "label" from rtx to rtx_code_label *. (do_cmp_and_jump): Likewise for param "label". --- gcc/expmed.c | 61 +++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/gcc/expmed.c b/gcc/expmed.c index e76b6fc..1c79618 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -65,7 +65,7 @@ static rtx extract_fixed_bit_field_1 (enum machine_mode, rtx, static rtx lshift_value (enum machine_mode, unsigned HOST_WIDE_INT, int); static rtx extract_split_bit_field (rtx, unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT, int); -static void do_cmp_and_jump (rtx, rtx, enum rtx_code, enum machine_mode, rtx); +static void do_cmp_and_jump (rtx, rtx, enum rtx_code, enum machine_mode, rtx_code_label *); static rtx expand_smod_pow2 (enum machine_mode, rtx, HOST_WIDE_INT); static rtx expand_sdiv_pow2 (enum machine_mode, rtx, HOST_WIDE_INT); @@ -508,7 +508,7 @@ store_bit_field_using_insv (const extraction_insn *insv, rtx op0, struct expand_operand ops[4]; rtx value1; rtx xop0 = op0; - rtx last = get_last_insn (); + rtx_insn *last = get_last_insn (); bool copy_back = false; enum machine_mode op_mode = insv->field_mode; @@ -794,7 +794,7 @@ store_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, unsigned int backwards = WORDS_BIG_ENDIAN && fieldmode != BLKmode; unsigned int nwords = (bitsize + (BITS_PER_WORD - 1)) / BITS_PER_WORD; unsigned int i; - rtx last; + rtx_insn *last; /* This is the mode we must force value to, so that there will be enough subwords to extract. Note that fieldmode will often (always?) be @@ -900,7 +900,7 @@ store_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, && store_bit_field_using_insv (&insv, op0, bitsize, bitnum, value)) return true; - rtx last = get_last_insn (); + rtx_insn *last = get_last_insn (); /* Try loading part of OP0 into a register, inserting the bitfield into that, and then copying the result back to OP0. */ @@ -1579,7 +1579,7 @@ extract_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, unsigned int backwards = WORDS_BIG_ENDIAN; unsigned int nwords = (bitsize + (BITS_PER_WORD - 1)) / BITS_PER_WORD; unsigned int i; - rtx last; + rtx_insn *last; if (target == 0 || !REG_P (target) || !valid_multiword_target_p (target)) target = gen_reg_rtx (mode); @@ -1697,7 +1697,7 @@ extract_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, return result; } - rtx last = get_last_insn (); + rtx_insn *last = get_last_insn (); /* Try loading part of OP0 into a register and extracting the bitfield from that. */ @@ -2929,7 +2929,8 @@ expand_mult_const (enum machine_mode mode, rtx op0, HOST_WIDE_INT val, enum mult_variant variant) { HOST_WIDE_INT val_so_far; - rtx insn, accum, tem; + rtx_insn *insn; + rtx accum, tem; int opno; enum machine_mode nmode; @@ -3526,7 +3527,8 @@ expmed_mult_highpart_optab (enum machine_mode mode, rtx op0, rtx op1, && (mul_cost (speed, wider_mode) + shift_cost (speed, mode, size-1) < max_cost)) { - rtx insns, wop0, wop1; + rtx_insn *insns; + rtx wop0, wop1; /* We need to widen the operands, for example to ensure the constant multiplier is correctly sign or zero extended. @@ -3647,7 +3649,8 @@ expmed_mult_highpart (enum machine_mode mode, rtx op0, rtx op1, static rtx expand_smod_pow2 (enum machine_mode mode, rtx op0, HOST_WIDE_INT d) { - rtx result, temp, shift, label; + rtx result, temp, shift; + rtx_code_label *label; int logd; int prec = GET_MODE_PRECISION (mode); @@ -3743,7 +3746,8 @@ expand_smod_pow2 (enum machine_mode mode, rtx op0, HOST_WIDE_INT d) static rtx expand_sdiv_pow2 (enum machine_mode mode, rtx op0, HOST_WIDE_INT d) { - rtx temp, label; + rtx temp; + rtx_code_label *label; int logd; logd = floor_log2 (d); @@ -3776,7 +3780,7 @@ expand_sdiv_pow2 (enum machine_mode mode, rtx op0, HOST_WIDE_INT d) mode, temp, temp2, mode, 0); if (temp2) { - rtx seq = get_insns (); + rtx_insn *seq = get_insns (); end_sequence (); emit_insn (seq); return expand_shift (RSHIFT_EXPR, mode, temp2, logd, NULL_RTX, 0); @@ -3857,9 +3861,9 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode, enum machine_mode compute_mode; rtx tquotient; rtx quotient = 0, remainder = 0; - rtx last; + rtx_insn *last; int size; - rtx insn; + rtx_insn *insn; optab optab1, optab2; int op1_is_constant, op1_is_pow2 = 0; int max_cost, extra_cost; @@ -4477,7 +4481,7 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode, /* This could be computed with a branch-less sequence. Save that for later. */ rtx tem; - rtx label = gen_label_rtx (); + rtx_code_label *label = gen_label_rtx (); do_cmp_and_jump (remainder, const0_rtx, EQ, compute_mode, label); tem = expand_binop (compute_mode, xor_optab, op0, op1, NULL_RTX, 0, OPTAB_WIDEN); @@ -4491,7 +4495,7 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode, /* No luck with division elimination or divmod. Have to do it by conditionally adjusting op0 *and* the result. */ { - rtx label1, label2, label3, label4, label5; + rtx_code_label *label1, *label2, *label3, *label4, *label5; rtx adjusted_op0; rtx tem; @@ -4552,7 +4556,7 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode, compute_mode, 1, 1); if (t3 == 0) { - rtx lab; + rtx_code_label *lab; lab = gen_label_rtx (); do_cmp_and_jump (t2, const0_rtx, EQ, compute_mode, lab); expand_inc (t1, const1_rtx); @@ -4592,7 +4596,7 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode, { /* This could be computed with a branch-less sequence. Save that for later. */ - rtx label = gen_label_rtx (); + rtx_code_label *label = gen_label_rtx (); do_cmp_and_jump (remainder, const0_rtx, EQ, compute_mode, label); expand_inc (quotient, const1_rtx); @@ -4604,7 +4608,7 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode, /* No luck with division elimination or divmod. Have to do it by conditionally adjusting op0 *and* the result. */ { - rtx label1, label2; + rtx_code_label *label1, *label2; rtx adjusted_op0, tem; quotient = gen_reg_rtx (compute_mode); @@ -4649,7 +4653,7 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode, compute_mode, 1, 1); if (t3 == 0) { - rtx lab; + rtx_code_label *lab; lab = gen_label_rtx (); do_cmp_and_jump (t2, const0_rtx, EQ, compute_mode, lab); expand_inc (t1, const1_rtx); @@ -4689,7 +4693,7 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode, /* This could be computed with a branch-less sequence. Save that for later. */ rtx tem; - rtx label = gen_label_rtx (); + rtx_code_label *label = gen_label_rtx (); do_cmp_and_jump (remainder, const0_rtx, EQ, compute_mode, label); tem = expand_binop (compute_mode, xor_optab, op0, op1, @@ -4704,7 +4708,7 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode, /* No luck with division elimination or divmod. Have to do it by conditionally adjusting op0 *and* the result. */ { - rtx label1, label2, label3, label4, label5; + rtx_code_label *label1, *label2, *label3, *label4, *label5; rtx adjusted_op0; rtx tem; @@ -4779,7 +4783,7 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode, if (unsignedp) { rtx tem; - rtx label; + rtx_code_label *label; label = gen_label_rtx (); quotient = gen_reg_rtx (compute_mode); remainder = gen_reg_rtx (compute_mode); @@ -4802,7 +4806,7 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode, else { rtx abs_rem, abs_op1, tem, mask; - rtx label; + rtx_code_label *label; label = gen_label_rtx (); quotient = gen_reg_rtx (compute_mode); remainder = gen_reg_rtx (compute_mode); @@ -5112,7 +5116,8 @@ emit_cstore (rtx target, enum insn_code icode, enum rtx_code code, enum machine_mode target_mode) { struct expand_operand ops[4]; - rtx op0, last, comparison, subtarget; + rtx op0, comparison, subtarget; + rtx_insn *last; enum machine_mode result_mode = targetm.cstore_mode (icode); last = get_last_insn (); @@ -5416,7 +5421,8 @@ emit_store_flag (rtx target, enum rtx_code code, rtx op0, rtx op1, enum machine_mode target_mode = target ? GET_MODE (target) : VOIDmode; enum rtx_code rcode; rtx subtarget; - rtx tem, last, trueval; + rtx tem, trueval; + rtx_insn *last; /* If we compare constants, we shouldn't use a store-flag operation, but a constant load. We can get there via the vanilla route that @@ -5744,7 +5750,8 @@ rtx emit_store_flag_force (rtx target, enum rtx_code code, rtx op0, rtx op1, enum machine_mode mode, int unsignedp, int normalizep) { - rtx tem, label; + rtx tem; + rtx_code_label *label; rtx trueval, falseval; /* First see if emit_store_flag can do the job. */ @@ -5818,7 +5825,7 @@ emit_store_flag_force (rtx target, enum rtx_code code, rtx op0, rtx op1, static void do_cmp_and_jump (rtx arg1, rtx arg2, enum rtx_code op, enum machine_mode mode, - rtx label) + rtx_code_label *label) { int unsignedp = (op == LTU || op == LEU || op == GTU || op == GEU); do_compare_rtx_and_jump (arg1, arg2, op, unsignedp, mode, -- 1.8.5.3