Hi,
This patch series fixes PR65637.
Currently, ssa-handling code in expand_omp_for_static_chunk is dead and not
exercised by testing.
Ssa-handling code in omp-low.c is only triggered by pass_parallelize_loops, and
that pass doesn't specify a chunk size on the GIMPLE_OMP_FOR it constructs, so
that only exercises the expand_omp_for_static_nochunk path.
Using the attached trigger patch, we excercise the ssa-handling code in
expand_omp_for_static_chunk. The following patch series fixes the problems in
the ssa-handling code that we encounter.
1. Fix gcc_assert in expand_omp_for_static_chunk
2. Fix inner loop phi in expand_omp_for_static_chunk
3. Handle 2 preds for fin_bb in expand_omp_for_static_chunk
The patch series has been bootstrapped and reg-tested on x86_64 together with
attached trigger patch.
I'll post the patches from the patch series individually, in response to this
email.
Thanks,
- Tom
Set chunk_size to one for parloops parallel
---
gcc/tree-parloops.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c
index 62a6444..862c420 100644
--- a/gcc/tree-parloops.c
+++ b/gcc/tree-parloops.c
@@ -1719,6 +1719,7 @@ create_parallel_loop (struct loop *loop, tree loop_fn, tree data,
type = TREE_TYPE (cvar);
t = build_omp_clause (loc, OMP_CLAUSE_SCHEDULE);
OMP_CLAUSE_SCHEDULE_KIND (t) = OMP_CLAUSE_SCHEDULE_STATIC;
+ OMP_CLAUSE_SCHEDULE_CHUNK_EXPR (t) = integer_one_node;
for_stmt = gimple_build_omp_for (NULL, GF_OMP_FOR_KIND_FOR, t, 1, NULL);
gimple_set_location (for_stmt, loc);
--
1.9.1