From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15540 invoked by alias); 6 Aug 2014 17:41:41 -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 15493 invoked by uid 89); 6 Aug 2014 17:41:40 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.2 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:41:39 +0000 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XF4tm-0001Wd-OI for gcc-patches@gcc.gnu.org; Wed, 06 Aug 2014 13:21:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:30436) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XF4tm-0001W2-G4 for gcc-patches@gcc.gnu.org; Wed, 06 Aug 2014 13:21:14 -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 s76HKDVO028994 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 6 Aug 2014 13:20:14 -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 s76HJ2pc030913; Wed, 6 Aug 2014 13:20:13 -0400 From: David Malcolm To: gcc-patches@gcc.gnu.org Cc: David Malcolm Subject: [PATCH 122/236] var-tracking.c: Use rtx_insn Date: Wed, 06 Aug 2014 17:41:00 -0000 Message-Id: <1407345815-14551-123-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/msg00626.txt.bz2 gcc/ * var-tracking.c (struct micro_operation_def): Strengthen field "insn" from rtx to rtx_insn *. (struct emit_note_data_def): Likewise. (insn_stack_adjust_offset_pre_post): Likewise for param "insn". (vt_stack_adjustments): Likewise for local "insn". (adjust_insn): Likewise for param "insn". (val_store): Likewise. (val_resolve): Likewise. (struct count_use_info): Likewise for field "insn". (log_op_type): Likewise for param "insn". (reverse_op): Likewise. (prepare_call_arguments): Likewise. (add_with_sets): The initial param takes an insn, but we can't yet strengthen it from rtx to rtx_insn * since it's used as a cselib_record_sets_hook callback. For now rename initial param from "insn" to "uncast_insn", and introduce a local "insn" of the stronger rtx_insn * type, with a checked cast. (compute_bb_dataflow): Strengthen local "insn" from rtx to rtx_insn *. (emit_note_insn_var_location): Likewise. (emit_notes_for_changes): Likewise. (emit_notes_for_differences): Likewise. (next_non_note_insn_var_location): Likewise for return type and for param "insn". (emit_notes_in_bb): Likewise for locals "insn" and "next_insn". (vt_initialize): Likewise for local "insn". (delete_debug_insns): Likewise for locals "insn" and "next". --- gcc/var-tracking.c | 48 +++++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c index ed8abdc..4d30650 100644 --- a/gcc/var-tracking.c +++ b/gcc/var-tracking.c @@ -179,7 +179,7 @@ typedef struct micro_operation_def instruction or note in the original flow (before any var-tracking notes are inserted, to simplify emission of notes), for MO_SET and MO_CLOBBER. */ - rtx insn; + rtx_insn *insn; union { /* Location. For MO_SET and MO_COPY, this is the SET that @@ -509,7 +509,7 @@ typedef variable_table_type::iterator variable_iterator_type; typedef struct emit_note_data_def { /* The instruction which the note will be emitted before/after. */ - rtx insn; + rtx_insn *insn; /* Where the note will be emitted (before/after insn)? */ enum emit_note_where where; @@ -622,7 +622,7 @@ static bool cselib_hook_called; /* Local function prototypes. */ static void stack_adjust_offset_pre_post (rtx, HOST_WIDE_INT *, HOST_WIDE_INT *); -static void insn_stack_adjust_offset_pre_post (rtx, HOST_WIDE_INT *, +static void insn_stack_adjust_offset_pre_post (rtx_insn *, HOST_WIDE_INT *, HOST_WIDE_INT *); static bool vt_stack_adjustments (void); @@ -793,7 +793,7 @@ stack_adjust_offset_pre_post (rtx pattern, HOST_WIDE_INT *pre, PRE- and POST-modifying stack pointer. */ static void -insn_stack_adjust_offset_pre_post (rtx insn, HOST_WIDE_INT *pre, +insn_stack_adjust_offset_pre_post (rtx_insn *insn, HOST_WIDE_INT *pre, HOST_WIDE_INT *post) { rtx pattern; @@ -862,7 +862,7 @@ vt_stack_adjustments (void) /* Check if the edge destination has been visited yet. */ if (!VTI (dest)->visited) { - rtx insn; + rtx_insn *insn; HOST_WIDE_INT pre, post, offset; VTI (dest)->visited = true; VTI (dest)->in.stack_adjust = offset = VTI (src)->out.stack_adjust; @@ -1198,7 +1198,7 @@ adjust_mem_stores (rtx loc, const_rtx expr, void *data) as other sets to the insn. */ static void -adjust_insn (basic_block bb, rtx insn) +adjust_insn (basic_block bb, rtx_insn *insn) { struct adjust_mem_data amd; rtx set; @@ -2470,7 +2470,8 @@ val_bind (dataflow_set *set, rtx val, rtx loc, bool modified) values bound to it. */ static void -val_store (dataflow_set *set, rtx val, rtx loc, rtx insn, bool modified) +val_store (dataflow_set *set, rtx val, rtx loc, rtx_insn *insn, + bool modified) { cselib_val *v = CSELIB_VAL_PTR (val); @@ -2601,7 +2602,7 @@ val_reset (dataflow_set *set, decl_or_value dv) value. */ static void -val_resolve (dataflow_set *set, rtx val, rtx loc, rtx insn) +val_resolve (dataflow_set *set, rtx val, rtx loc, rtx_insn *insn) { decl_or_value dv = dv_from_value (val); @@ -5296,7 +5297,7 @@ var_lowpart (enum machine_mode mode, rtx loc) struct count_use_info { /* The insn where the RTX is. */ - rtx insn; + rtx_insn *insn; /* The basic block where insn is. */ basic_block bb; @@ -5478,7 +5479,7 @@ use_type (rtx loc, struct count_use_info *cui, enum machine_mode *modep) INSN of BB. */ static inline void -log_op_type (rtx x, basic_block bb, rtx insn, +log_op_type (rtx x, basic_block bb, rtx_insn *insn, enum micro_operation_type mopt, FILE *out) { fprintf (out, "bb %i op %i insn %i %s ", @@ -5730,7 +5731,7 @@ add_uses_1 (rtx *x, void *cui) no longer live we can express its value as VAL - 6. */ static void -reverse_op (rtx val, const_rtx expr, rtx insn) +reverse_op (rtx val, const_rtx expr, rtx_insn *insn) { rtx src, arg, ret; cselib_val *v; @@ -6127,7 +6128,7 @@ static rtx call_arguments; /* Compute call_arguments. */ static void -prepare_call_arguments (basic_block bb, rtx insn) +prepare_call_arguments (basic_block bb, rtx_insn *insn) { rtx link, x, call; rtx prev, cur, next; @@ -6463,8 +6464,9 @@ prepare_call_arguments (basic_block bb, rtx insn) first place, in which case sets and n_sets will be 0). */ static void -add_with_sets (rtx insn, struct cselib_set *sets, int n_sets) +add_with_sets (rtx uncast_insn, struct cselib_set *sets, int n_sets) { + rtx_insn *insn = as_a (uncast_insn); basic_block bb = BLOCK_FOR_INSN (insn); int n1, n2; struct count_use_info cui; @@ -6661,7 +6663,7 @@ compute_bb_dataflow (basic_block bb) FOR_EACH_VEC_ELT (VTI (bb)->mos, i, mo) { - rtx insn = mo->insn; + rtx_insn *insn = mo->insn; switch (mo->type) { @@ -8585,7 +8587,7 @@ int emit_note_insn_var_location (variable_def **varp, emit_note_data *data) { variable var = *varp; - rtx insn = data->insn; + rtx_insn *insn = data->insn; enum emit_note_where where = data->where; variable_table_type vars = data->vars; rtx_note *note; @@ -8966,7 +8968,7 @@ process_changed_values (variable_table_type htab) the notes shall be emitted before of after instruction INSN. */ static void -emit_notes_for_changes (rtx insn, enum emit_note_where where, +emit_notes_for_changes (rtx_insn *insn, enum emit_note_where where, shared_hash vars) { emit_note_data data; @@ -9084,7 +9086,7 @@ emit_notes_for_differences_2 (variable_def **slot, variable_table_type old_vars) NEW_SET. */ static void -emit_notes_for_differences (rtx insn, dataflow_set *old_set, +emit_notes_for_differences (rtx_insn *insn, dataflow_set *old_set, dataflow_set *new_set) { shared_hash_htab (old_set->vars) @@ -9098,8 +9100,8 @@ emit_notes_for_differences (rtx insn, dataflow_set *old_set, /* Return the next insn after INSN that is not a NOTE_INSN_VAR_LOCATION. */ -static rtx -next_non_note_insn_var_location (rtx insn) +static rtx_insn * +next_non_note_insn_var_location (rtx_insn *insn) { while (insn) { @@ -9126,8 +9128,8 @@ emit_notes_in_bb (basic_block bb, dataflow_set *set) FOR_EACH_VEC_ELT (VTI (bb)->mos, i, mo) { - rtx insn = mo->insn; - rtx next_insn = next_non_note_insn_var_location (insn); + rtx_insn *insn = mo->insn; + rtx_insn *next_insn = next_non_note_insn_var_location (insn); switch (mo->type) { @@ -10048,7 +10050,7 @@ vt_initialize (void) FOR_EACH_BB_FN (bb, cfun) { - rtx insn; + rtx_insn *insn; HOST_WIDE_INT pre, post = 0; basic_block first_bb, last_bb; @@ -10184,7 +10186,7 @@ static void delete_debug_insns (void) { basic_block bb; - rtx insn, next; + rtx_insn *insn, *next; if (!MAY_HAVE_DEBUG_INSNS) return; -- 1.8.5.3