aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Liska <marxin@gcc.gnu.org>2016-03-03 10:08:09 +0000
committerMartin Liska <marxin@gcc.gnu.org>2016-03-03 10:08:09 +0000
commit23504262322d7231abc3a19aaabaa36d4319095f (patch)
treeea3f63705795ea8f5b90be12b553c2d94e319555 /gcc
parentb7b9e1a958e8238a3176e276cfeadf4f14a9afff (diff)
downloadgcc-23504262322d7231abc3a19aaabaa36d4319095f.zip
gcc-23504262322d7231abc3a19aaabaa36d4319095f.tar.gz
gcc-23504262322d7231abc3a19aaabaa36d4319095f.tar.bz2
Skip properly debug stmt in optimize_mask_stores (PR
PR tree-optimization/70043 * tree-vect-loop.c (optimize_mask_stores): Move iterator to previous statement if we see a debug statement. * gfortran.dg/vect/pr70043.f90: New test. From-SVN: r233934
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/vect/pr70043.f9015
-rw-r--r--gcc/tree-vect-loop.c5
4 files changed, 30 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 97d3bb6..e232f52 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-03-03 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/70043
+ * tree-vect-loop.c (optimize_mask_stores): Move iterator to
+ previous statement if we see a debug statement.
+
2016-03-03 Richard Biener <rguenther@suse.de>
PR tree-optimization/55936
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 93919a0..da7307a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-03-03 Ilya Enkovich <enkovich.gnu@gmail.com>
+
+ PR tree-optimization/70043
+ * gfortran.dg/vect/pr70043.f90: New test.
+
2016-03-03 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/specs/task1.ads: New test.
diff --git a/gcc/testsuite/gfortran.dg/vect/pr70043.f90 b/gcc/testsuite/gfortran.dg/vect/pr70043.f90
new file mode 100644
index 0000000..36d6a0b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/vect/pr70043.f90
@@ -0,0 +1,15 @@
+! { dg-do compile }
+! { dg-additional-options "-Ofast -g" }
+! { dg-additional-options "-march=haswell" { target i?86-*-* x86_64-*-* } }
+
+subroutine fn1(a, b)
+ real(8), intent(in) :: b(100)
+ real(8), intent(inout) :: a(100)
+ real(8) c
+ do i=0,100
+ if( a(i) < 0.0 ) then
+ c = a(i) * b(i)
+ a(i) = a(i) - c / b(i)
+ endif
+ enddo
+end subroutine fn1
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 627ff1c..0cd8f75 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -7090,7 +7090,10 @@ optimize_mask_stores (struct loop *loop)
/* Skip debug statements. */
if (is_gimple_debug (gsi_stmt (gsi)))
- continue;
+ {
+ gsi_prev (&gsi);
+ continue;
+ }
stmt1 = gsi_stmt (gsi);
/* Do not consider statements writing to memory or having
volatile operand. */