aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2014-03-17 14:15:51 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2014-03-17 14:15:51 +0000
commitab2ffbeb332afb09e6603e3a8a96e5d7f1f3e3c6 (patch)
tree14df3553deedf61872893c8e7021d826f7a34289 /gcc
parent5523efdf24d43022082ccf103f11f144a0ff9548 (diff)
downloadgcc-ab2ffbeb332afb09e6603e3a8a96e5d7f1f3e3c6.zip
gcc-ab2ffbeb332afb09e6603e3a8a96e5d7f1f3e3c6.tar.gz
gcc-ab2ffbeb332afb09e6603e3a8a96e5d7f1f3e3c6.tar.bz2
re PR middle-end/60534 (ICE: in expand_GOMP_SIMD_VF, at internal-fn.c:142 with -fopenmp -O -fno-tree-loop-optimize and #pragma omp simd reduction)
PR middle-end/60534 * omp-low.c (omp_max_vf): Treat -fno-tree-loop-optimize the same as -fno-tree-loop-vectorize. (expand_omp_simd): Likewise. testsuite/ * gcc.dg/gomp/pr60534.c: New test. From-SVN: r208616
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/omp-low.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/gomp/pr60534.c16
4 files changed, 30 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7d0ca2d..b7c5578 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2014-03-17 Marek Polacek <polacek@redhat.com>
+
+ PR middle-end/60534
+ * omp-low.c (omp_max_vf): Treat -fno-tree-loop-optimize the same
+ as -fno-tree-loop-vectorize.
+ (expand_omp_simd): Likewise.
+
2014-03-15 Eric Botcazou <ebotcazou@adacore.com>
* config/sparc/sparc-protos.h (tls_call_delay): Delete.
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index 91c8656..24ef3c8 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -2929,6 +2929,7 @@ omp_max_vf (void)
{
if (!optimize
|| optimize_debug
+ || !flag_tree_loop_optimize
|| (!flag_tree_loop_vectorize
&& (global_options_set.x_flag_tree_loop_vectorize
|| global_options_set.x_flag_tree_vectorize)))
@@ -6839,6 +6840,7 @@ expand_omp_simd (struct omp_region *region, struct omp_for_data *fd)
if ((flag_tree_loop_vectorize
|| (!global_options_set.x_flag_tree_loop_vectorize
&& !global_options_set.x_flag_tree_vectorize))
+ && flag_tree_loop_optimize
&& loop->safelen > 1)
{
loop->force_vect = true;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3769c7f..063680e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-03-17 Marek Polacek <polacek@redhat.com>
+
+ PR middle-end/60534
+ * gcc.dg/gomp/pr60534.c: New test.
+
2014-03-17 Kai Tietz <ktietz@redhat.com>
* gcc.c-torture/compile/20010327-1.c: Disable test for LLP64 targets.
diff --git a/gcc/testsuite/gcc.dg/gomp/pr60534.c b/gcc/testsuite/gcc.dg/gomp/pr60534.c
new file mode 100644
index 0000000..f8a6bdc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/gomp/pr60534.c
@@ -0,0 +1,16 @@
+/* PR middle-end/60534 */
+/* { dg-do compile } */
+/* { dg-options "-fopenmp -O -fno-tree-loop-optimize" } */
+
+extern int d[];
+
+int
+foo (int a)
+{
+ int c = 0;
+ int l;
+#pragma omp simd reduction(+: c)
+ for (l = 0; l < a; ++l)
+ c += d[l];
+ return c;
+}