X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fgenrecog.c;h=0d8be8f760733a7d61c32472659e6b3507a06092;hb=75dfcf1c8caa3180aef81026a73d2ce4f5246ced;hp=08f63bd03eda328b0ba265616c0583fe54fc05a4;hpb=2494d261a92a20173efdaeefae00bace5d217115;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/genrecog.c b/gcc/genrecog.c index 08f63bd03ed..0d8be8f7607 100644 --- a/gcc/genrecog.c +++ b/gcc/genrecog.c @@ -221,83 +221,6 @@ static struct position root_pos; since we are given that instruction's pattern as x0. */ static struct position *peep2_insn_pos_list = &root_pos; -static struct decision *new_decision - (struct position *, struct decision_head *); -static struct decision_test *new_decision_test - (enum decision_type, struct decision_test ***); -static rtx find_operand - (rtx, int, rtx); -static rtx find_matching_operand - (rtx, int); -static void validate_pattern - (rtx, rtx, rtx, int); -static struct decision *add_to_sequence - (rtx, struct decision_head *, struct position *, enum routine_type, int); - -static int maybe_both_true_2 - (struct decision_test *, struct decision_test *); -static int maybe_both_true_1 - (struct decision_test *, struct decision_test *); -static int maybe_both_true - (struct decision *, struct decision *, int); - -static int nodes_identical_1 - (struct decision_test *, struct decision_test *); -static int nodes_identical - (struct decision *, struct decision *); -static void merge_accept_insn - (struct decision *, struct decision *); -static void merge_trees - (struct decision_head *, struct decision_head *); - -static void factor_tests - (struct decision_head *); -static void simplify_tests - (struct decision_head *); -static int break_out_subroutines - (struct decision_head *, int); -static void find_afterward - (struct decision_head *, struct decision *); - -static void change_state - (struct position *, struct position *, const char *); -static void print_code - (enum rtx_code); -static void write_afterward - (struct decision *, struct decision *, const char *); -static struct decision *write_switch - (struct decision *, int); -static void write_cond - (struct decision_test *, int, enum routine_type); -static void write_action - (struct decision *, struct decision_test *, int, int, - struct decision *, enum routine_type); -static int is_unconditional - (struct decision_test *, enum routine_type); -static int write_node - (struct decision *, int, enum routine_type); -static void write_tree_1 - (struct decision_head *, int, enum routine_type); -static void write_tree - (struct decision_head *, struct position *, enum routine_type, int); -static void write_subroutine - (struct decision_head *, enum routine_type); -static void write_subroutines - (struct decision_head *, enum routine_type); -static void write_header - (void); - -static struct decision_head make_insn_sequence - (rtx, enum routine_type); -static void process_tree - (struct decision_head *, enum routine_type); - -static void debug_decision_0 - (struct decision *, int, int); -static void debug_decision_1 - (struct decision *, int); -static void debug_decision_2 - (struct decision_test *); extern void debug_decision (struct decision *); extern void debug_decision_list @@ -913,10 +836,10 @@ add_to_sequence (rtx pattern, struct decision_head *last, test = new_decision_test (DT_accept_op, &place); test->u.opno = XINT (pattern, 0); - subpos_ptr = &pos->xvecexp0s; + subpos_ptr = &pos->xexps; for (i = 0; i < (size_t) XVECLEN (pattern, 1); i++) { - subpos = next_position (subpos_ptr, pos, POS_XVECEXP0, i); + subpos = next_position (subpos_ptr, pos, POS_XEXP, i); sub = add_to_sequence (XVECEXP (pattern, 1, i), &sub->success, subpos, insn_type, 0); subpos_ptr = &subpos->next; @@ -2422,7 +2345,7 @@ make_insn_sequence (rtx insn, enum routine_type type) if (GET_CODE (tmp) != MATCH_SCRATCH && GET_CODE (tmp) != MATCH_DUP) { c_test_pos = next_position (pos_ptr, &root_pos, - POS_PEEP2_INSN, i); + POS_PEEP2_INSN, j); XVECEXP (x, 0, j) = tmp; j++; pos_ptr = &c_test_pos->next;