aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2015-06-17 20:11:42 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2015-06-17 20:11:42 +0200
commita1ceb6041e32e5ab4b0c38dc5b52fe9d82948719 (patch)
tree9fb5fd8414b3ccc7263ca8c4c655d25b948628eb /gcc
parent64b5fcfa3bc6ac1d5f0bab9d5de3a8cd2259d70e (diff)
downloadgcc-a1ceb6041e32e5ab4b0c38dc5b52fe9d82948719.zip
gcc-a1ceb6041e32e5ab4b0c38dc5b52fe9d82948719.tar.gz
gcc-a1ceb6041e32e5ab4b0c38dc5b52fe9d82948719.tar.bz2
re PR middle-end/66429 (ICE in expand_GOMP_SIMD_LAST_LANE)
PR middle-end/66429 * omp-low.c (expand_omp_taskreg, expand_omp_target): Use child_cfun instead of DECL_STRUCT_FUNCTION (child_fn). Or in has_simduid_loops and has_force_vectorize_loops flags from cfun into child_cfun. (expand_omp_simd): For broken loop, set cfun->has_simduid_loops if simduid is non-NULL. * tree-pass.h (make_pass_simduid_cleanup): New prototype. * passes.def (pass_simduid_cleanup): Add new pass after loop passes. * tree-vectorizer.c (adjust_simduid_builtins): Remove one unnecessary indirection from htab argument's type. (shrink_simd_arrays): New function. (vectorize_loops): Use it. Adjust adjust_simduid_builtins caller. Don't call adjust_simduid_builtins if there are no loops. (pass_data_simduid_cleanup, pass_simduid_cleanup): New variables. (pass_simduid_cleanup::execute): New method. (make_pass_simduid_cleanup): New function. From-SVN: r224571
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/omp-low.c4
2 files changed, 5 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8f92fec..919a621 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,8 +1,8 @@
2015-06-17 Jakub Jelinek <jakub@redhat.com>
PR middle-end/66429
- * omp-low.c (expand_omp_taskreg): Use child_cfun instead of
- DECL_STRUCT_FUNCTION (child_fn). Or in has_simduid_loops
+ * omp-low.c (expand_omp_taskreg, expand_omp_target): Use child_cfun
+ instead of DECL_STRUCT_FUNCTION (child_fn). Or in has_simduid_loops
and has_force_vectorize_loops flags from cfun into
child_cfun.
(expand_omp_simd): For broken loop, set cfun->has_simduid_loops
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index 6325b82..415a2c8 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -8960,7 +8960,9 @@ expand_omp_target (struct omp_region *region)
vec_safe_truncate (child_cfun->local_decls, dstidx);
/* Inform the callgraph about the new function. */
- DECL_STRUCT_FUNCTION (child_fn)->curr_properties = cfun->curr_properties;
+ child_cfun->curr_properties = cfun->curr_properties;
+ child_cfun->has_simduid_loops |= cfun->has_simduid_loops;
+ child_cfun->has_force_vectorize_loops |= cfun->has_force_vectorize_loops;
cgraph_node *node = cgraph_node::get_create (child_fn);
node->parallelized_function = 1;
cgraph_node::add_new_function (child_fn, true);