OSDN Git Service

fortran/
[pf3gnuchains/gcc-fork.git] / gcc / genrecog.c
index 08f63bd..0d8be8f 100644 (file)
@@ -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;
 \f
-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;