From ab2ffbeb332afb09e6603e3a8a96e5d7f1f3e3c6 Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Mon, 17 Mar 2014 14:15:51 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 7 +++++++ gcc/omp-low.c | 2 ++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/gomp/pr60534.c | 16 ++++++++++++++++ 4 files changed, 30 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/gomp/pr60534.c 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 + + 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 * 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 + + PR middle-end/60534 + * gcc.dg/gomp/pr60534.c: New test. + 2014-03-17 Kai Tietz * 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; +} -- 2.7.4