aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vectorizer.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r--gcc/tree-vectorizer.h74
1 files changed, 21 insertions, 53 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
index fa206a2..733322a 100644
--- a/gcc/tree-vectorizer.h
+++ b/gcc/tree-vectorizer.h
@@ -1119,68 +1119,36 @@ set_vinfo_for_stmt (gimple *stmt, stmt_vec_info info)
}
}
-/* Return the earlier statement between STMT1 and STMT2. */
+/* Return the earlier statement between STMT1_INFO and STMT2_INFO. */
-static inline gimple *
-get_earlier_stmt (gimple *stmt1, gimple *stmt2)
+static inline stmt_vec_info
+get_earlier_stmt (stmt_vec_info stmt1_info, stmt_vec_info stmt2_info)
{
- unsigned int uid1, uid2;
-
- if (stmt1 == NULL)
- return stmt2;
-
- if (stmt2 == NULL)
- return stmt1;
-
- uid1 = gimple_uid (stmt1);
- uid2 = gimple_uid (stmt2);
-
- if (uid1 == 0 || uid2 == 0)
- return NULL;
-
- gcc_assert (uid1 <= stmt_vec_info_vec->length ()
- && uid2 <= stmt_vec_info_vec->length ());
- gcc_checking_assert ((STMT_VINFO_IN_PATTERN_P (vinfo_for_stmt (stmt1))
- || !STMT_VINFO_RELATED_STMT (vinfo_for_stmt (stmt1)))
- && (STMT_VINFO_IN_PATTERN_P (vinfo_for_stmt (stmt2))
- || !STMT_VINFO_RELATED_STMT (vinfo_for_stmt (stmt2))));
+ gcc_checking_assert ((STMT_VINFO_IN_PATTERN_P (stmt1_info)
+ || !STMT_VINFO_RELATED_STMT (stmt1_info))
+ && (STMT_VINFO_IN_PATTERN_P (stmt2_info)
+ || !STMT_VINFO_RELATED_STMT (stmt2_info)));
- if (uid1 < uid2)
- return stmt1;
+ if (gimple_uid (stmt1_info->stmt) < gimple_uid (stmt2_info->stmt))
+ return stmt1_info;
else
- return stmt2;
+ return stmt2_info;
}
-/* Return the later statement between STMT1 and STMT2. */
+/* Return the later statement between STMT1_INFO and STMT2_INFO. */
-static inline gimple *
-get_later_stmt (gimple *stmt1, gimple *stmt2)
+static inline stmt_vec_info
+get_later_stmt (stmt_vec_info stmt1_info, stmt_vec_info stmt2_info)
{
- unsigned int uid1, uid2;
-
- if (stmt1 == NULL)
- return stmt2;
-
- if (stmt2 == NULL)
- return stmt1;
-
- uid1 = gimple_uid (stmt1);
- uid2 = gimple_uid (stmt2);
-
- if (uid1 == 0 || uid2 == 0)
- return NULL;
-
- gcc_assert (uid1 <= stmt_vec_info_vec->length ()
- && uid2 <= stmt_vec_info_vec->length ());
- gcc_checking_assert ((STMT_VINFO_IN_PATTERN_P (vinfo_for_stmt (stmt1))
- || !STMT_VINFO_RELATED_STMT (vinfo_for_stmt (stmt1)))
- && (STMT_VINFO_IN_PATTERN_P (vinfo_for_stmt (stmt2))
- || !STMT_VINFO_RELATED_STMT (vinfo_for_stmt (stmt2))));
+ gcc_checking_assert ((STMT_VINFO_IN_PATTERN_P (stmt1_info)
+ || !STMT_VINFO_RELATED_STMT (stmt1_info))
+ && (STMT_VINFO_IN_PATTERN_P (stmt2_info)
+ || !STMT_VINFO_RELATED_STMT (stmt2_info)));
- if (uid1 > uid2)
- return stmt1;
+ if (gimple_uid (stmt1_info->stmt) > gimple_uid (stmt2_info->stmt))
+ return stmt1_info;
else
- return stmt2;
+ return stmt2_info;
}
/* Return TRUE if a statement represented by STMT_INFO is a part of a
@@ -1674,7 +1642,7 @@ extern bool vect_make_slp_decision (loop_vec_info);
extern void vect_detect_hybrid_slp (loop_vec_info);
extern void vect_get_slp_defs (vec<tree> , slp_tree, vec<vec<tree> > *);
extern bool vect_slp_bb (basic_block);
-extern gimple *vect_find_last_scalar_stmt_in_slp (slp_tree);
+extern stmt_vec_info vect_find_last_scalar_stmt_in_slp (slp_tree);
extern bool is_simple_and_all_uses_invariant (gimple *, loop_vec_info);
extern bool can_duplicate_and_interleave_p (unsigned int, machine_mode,
unsigned int * = NULL,