tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
2008-01-12 Sebastian Pop <sebastian.pop@amd.com> * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New. (parallelize_loops): Don't parallelize irreducible components. From-SVN: r131561
This commit is contained in:
parent
8c87e2452f
commit
1d4af1e827
@ -1,3 +1,8 @@
|
||||
2008-01-12 Sebastian Pop <sebastian.pop@amd.com>
|
||||
|
||||
* tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
|
||||
(parallelize_loops): Don't parallelize irreducible components.
|
||||
|
||||
2008-01-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
|
||||
|
||||
PR c++/24924
|
||||
|
@ -431,6 +431,26 @@ loop_parallel_p (struct loop *loop, htab_t reduction_list, struct tree_niter_des
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Return true when LOOP contains basic blocks marked with the
|
||||
BB_IRREDUCIBLE_LOOP flag. */
|
||||
|
||||
static inline bool
|
||||
loop_has_blocks_with_irreducible_flag (struct loop *loop)
|
||||
{
|
||||
unsigned i;
|
||||
basic_block *bbs = get_loop_body_in_dom_order (loop);
|
||||
bool res = true;
|
||||
|
||||
for (i = 0; i < loop->num_nodes; i++)
|
||||
if (bbs[i]->flags & BB_IRREDUCIBLE_LOOP)
|
||||
goto end;
|
||||
|
||||
res = false;
|
||||
end:
|
||||
free (bbs);
|
||||
return res;
|
||||
}
|
||||
|
||||
/* Assigns the address of OBJ in TYPE to an ssa name, and returns this name.
|
||||
The assignment statement is placed before LOOP. DECL_ADDRESS maps decls
|
||||
to their addresses that can be reused. The address of OBJ is known to
|
||||
@ -1741,6 +1761,7 @@ parallelize_loops (void)
|
||||
|| expected_loop_iterations (loop) <= n_threads
|
||||
/* And of course, the loop must be parallelizable. */
|
||||
|| !can_duplicate_loop_p (loop)
|
||||
|| loop_has_blocks_with_irreducible_flag (loop)
|
||||
|| !loop_parallel_p (loop, reduction_list, &niter_desc))
|
||||
continue;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user