diff options
author | Alan Hayward <alan.hayward@arm.com> | 2016-06-03 13:04:01 +0000 |
---|---|---|
committer | Alan Hayward <alahay01@gcc.gnu.org> | 2016-06-03 13:04:01 +0000 |
commit | 3a2edf4cb86827b6aa2509baa6262fe49e11da93 (patch) | |
tree | 99fd49e5d691798fb795a84f777458870da59667 /gcc/tree-vect-loop.c | |
parent | b28ead45fe630b9e018a81cb46b7e1f971e4dc17 (diff) | |
download | gcc-3a2edf4cb86827b6aa2509baa6262fe49e11da93.zip gcc-3a2edf4cb86827b6aa2509baa6262fe49e11da93.tar.gz gcc-3a2edf4cb86827b6aa2509baa6262fe49e11da93.tar.bz2 |
[3/3] No need to vectorize simple only-live stmts
2016-06-03 Alan Hayward <alan.hayward@arm.com>
[3/3] No need to vectorize simple only-live stmts
gcc/
* tree-vect-stmts.c (vect_stmt_relevant_p): Do not vectorize non live
relevant stmts which are simple and invariant.
* tree-vect-loop.c (vectorizable_live_operation): Check relevance
instead of simple and invariant
testsuite/
* gcc.dg/vect/vect-live-slp-5.c: Remove dg check.
From-SVN: r237065
Diffstat (limited to 'gcc/tree-vect-loop.c')
-rw-r--r-- | gcc/tree-vect-loop.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 3cf1c79..bc1257c 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -6344,11 +6344,12 @@ vectorizable_live_operation (gimple *stmt, if (nested_in_vect_loop_p (loop, stmt)) return false; - /* If STMT is a simple assignment and its inputs are invariant, then it can - remain in place, unvectorized. The original last scalar value that it - computes will be used. */ - if (is_simple_and_all_uses_invariant (stmt, loop_vinfo)) + /* If STMT is not relevant and it is a simple assignment and its inputs are + invariant then it can remain in place, unvectorized. The original last + scalar value that it computes will be used. */ + if (!STMT_VINFO_RELEVANT_P (stmt_info)) { + gcc_assert (is_simple_and_all_uses_invariant (stmt, loop_vinfo)); if (dump_enabled_p ()) dump_printf_loc (MSG_NOTE, vect_location, "statement is simple and uses invariant. Leaving in " |