mirror of git://gcc.gnu.org/git/gcc.git
[36/46] Add a pattern_stmt_p field to stmt_vec_info
This patch adds a pattern_stmt_p field to stmt_vec_info, so that it's possible to tell whether the statement is a pattern statement without referring to other statements. The new field goes in what was previously a hole in the structure, so the size is the same as before. 2018-07-31 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vectorizer.h (_stmt_vec_info::pattern_stmt_p): New field. (is_pattern_stmt_p): Use it. * tree-vect-patterns.c (vect_init_pattern_stmt): Set pattern_stmt_p on pattern statements. From-SVN: r263151
This commit is contained in:
parent
cef6cac8bc
commit
634e715044
|
|
@ -1,3 +1,10 @@
|
||||||
|
2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
|
||||||
|
|
||||||
|
* tree-vectorizer.h (_stmt_vec_info::pattern_stmt_p): New field.
|
||||||
|
(is_pattern_stmt_p): Use it.
|
||||||
|
* tree-vect-patterns.c (vect_init_pattern_stmt): Set pattern_stmt_p
|
||||||
|
on pattern statements.
|
||||||
|
|
||||||
2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
|
2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
|
||||||
|
|
||||||
* tree-vect-patterns.c (vect_mark_pattern_stmts): Take the
|
* tree-vect-patterns.c (vect_mark_pattern_stmts): Take the
|
||||||
|
|
|
||||||
|
|
@ -108,6 +108,7 @@ vect_init_pattern_stmt (gimple *pattern_stmt, stmt_vec_info orig_stmt_info,
|
||||||
pattern_stmt_info = orig_stmt_info->vinfo->add_stmt (pattern_stmt);
|
pattern_stmt_info = orig_stmt_info->vinfo->add_stmt (pattern_stmt);
|
||||||
gimple_set_bb (pattern_stmt, gimple_bb (orig_stmt_info->stmt));
|
gimple_set_bb (pattern_stmt, gimple_bb (orig_stmt_info->stmt));
|
||||||
|
|
||||||
|
pattern_stmt_info->pattern_stmt_p = true;
|
||||||
STMT_VINFO_RELATED_STMT (pattern_stmt_info) = orig_stmt_info;
|
STMT_VINFO_RELATED_STMT (pattern_stmt_info) = orig_stmt_info;
|
||||||
STMT_VINFO_DEF_TYPE (pattern_stmt_info)
|
STMT_VINFO_DEF_TYPE (pattern_stmt_info)
|
||||||
= STMT_VINFO_DEF_TYPE (orig_stmt_info);
|
= STMT_VINFO_DEF_TYPE (orig_stmt_info);
|
||||||
|
|
|
||||||
|
|
@ -791,6 +791,12 @@ struct _stmt_vec_info {
|
||||||
/* Stmt is part of some pattern (computation idiom) */
|
/* Stmt is part of some pattern (computation idiom) */
|
||||||
bool in_pattern_p;
|
bool in_pattern_p;
|
||||||
|
|
||||||
|
/* True if the statement was created during pattern recognition as
|
||||||
|
part of the replacement for RELATED_STMT. This implies that the
|
||||||
|
statement isn't part of any basic block, although for convenience
|
||||||
|
its gimple_bb is the same as for RELATED_STMT. */
|
||||||
|
bool pattern_stmt_p;
|
||||||
|
|
||||||
/* Is this statement vectorizable or should it be skipped in (partial)
|
/* Is this statement vectorizable or should it be skipped in (partial)
|
||||||
vectorization. */
|
vectorization. */
|
||||||
bool vectorizable;
|
bool vectorizable;
|
||||||
|
|
@ -1157,8 +1163,7 @@ get_later_stmt (stmt_vec_info stmt1_info, stmt_vec_info stmt2_info)
|
||||||
static inline bool
|
static inline bool
|
||||||
is_pattern_stmt_p (stmt_vec_info stmt_info)
|
is_pattern_stmt_p (stmt_vec_info stmt_info)
|
||||||
{
|
{
|
||||||
stmt_vec_info related_stmt_info = STMT_VINFO_RELATED_STMT (stmt_info);
|
return stmt_info->pattern_stmt_p;
|
||||||
return related_stmt_info && STMT_VINFO_IN_PATTERN_P (related_stmt_info);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return true if BB is a loop header. */
|
/* Return true if BB is a loop header. */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue