diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2016-06-01 10:35:30 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2016-06-01 10:35:30 +0000 |
commit | a0dfeef505c7d5a619cc91d37acbfb9ea2c7f729 (patch) | |
tree | fcd08bc1810235edec6144188ecbf81b4db1627e | |
parent | 4618c453205f1812b32967312a845a66a1194495 (diff) | |
download | gcc-a0dfeef505c7d5a619cc91d37acbfb9ea2c7f729.zip gcc-a0dfeef505c7d5a619cc91d37acbfb9ea2c7f729.tar.gz gcc-a0dfeef505c7d5a619cc91d37acbfb9ea2c7f729.tar.bz2 |
tree-vect-loop.c (vect_determine_vectorization_factor): Also take into account live statements for mask producers.
* tree-vect-loop.c (vect_determine_vectorization_factor): Also take
into account live statements for mask producers.
From-SVN: r236981
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/opt56.adb | 15 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/opt56.ads | 7 | ||||
-rw-r--r-- | gcc/tree-vect-loop.c | 3 |
5 files changed, 33 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 92a4ed5..83a96bd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-06-01 Eric Botcazou <ebotcazou@adacore.com> + + * tree-vect-loop.c (vect_determine_vectorization_factor): Also take + into account live statements for mask producers. + 2016-06-01 Richard Biener <rguenther@suse.de> PR tree-optimization/71311 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c6e4a61..fc864d3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2016-06-01 Eric Botcazou <ebotcazou@adacore.com> + + * gnat.dg/opt56.ad[sb]: New test. + 2016-06-01 Paolo Carlini <paolo.carlini@oracle.com> PR c++/66635 diff --git a/gcc/testsuite/gnat.dg/opt56.adb b/gcc/testsuite/gnat.dg/opt56.adb new file mode 100644 index 0000000..9566f51 --- /dev/null +++ b/gcc/testsuite/gnat.dg/opt56.adb @@ -0,0 +1,15 @@ +-- { dg-do compile }
+-- { dg-options "-O3" }
+
+package body Opt56 is
+
+ function F (Values : Vector) return Boolean is
+ Result : Boolean := True;
+ begin
+ for I in Values'Range loop
+ Result := Result and Values (I) >= 0.0;
+ end loop;
+ return Result;
+ end;
+
+end Opt56;
diff --git a/gcc/testsuite/gnat.dg/opt56.ads b/gcc/testsuite/gnat.dg/opt56.ads new file mode 100644 index 0000000..31ee195 --- /dev/null +++ b/gcc/testsuite/gnat.dg/opt56.ads @@ -0,0 +1,7 @@ +package Opt56 is
+
+ type Vector is array (Positive range <>) of Float;
+
+ function F (Values : Vector) return Boolean;
+
+end Opt56;
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 6463a81..1bc132a 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -441,7 +441,8 @@ vect_determine_vectorization_factor (loop_vec_info loop_vinfo) && is_gimple_assign (stmt) && gimple_assign_rhs_code (stmt) != COND_EXPR) { - if (STMT_VINFO_RELEVANT_P (stmt_info)) + if (STMT_VINFO_RELEVANT_P (stmt_info) + || STMT_VINFO_LIVE_P (stmt_info)) mask_producers.safe_push (stmt_info); bool_result = true; |