On 24/11/15 14:13, Richard Biener wrote:
On Tue, 24 Nov 2015, Tom de Vries wrote:
On 23/11/15 11:02, Richard Biener wrote:
On Fri, 20 Nov 2015, Tom de Vries wrote:
On 20/11/15 14:29, Richard Biener wrote:
I agree it's somewhat of an odd behavior but all passes
should
either be placed in a sub-pipeline with an outer
loop_optimizer_init()/finalize () call or call both
themselves.
Hmm, but adding loop_optimizer_finalize at the end of pass_lim
breaks the
loop
pipeline.
We could use the style used in pass_slp_vectorize::execute:
...
pass_slp_vectorize::execute (function *fun)
{
basic_block bb;
bool in_loop_pipeline = scev_initialized_p ();
if (!in_loop_pipeline)
{
loop_optimizer_init (LOOPS_NORMAL);
scev_initialize ();
}
...
if (!in_loop_pipeline)
{
scev_finalize ();
loop_optimizer_finalize ();
}
...
Although that doesn't strike me as particularly clean.
At least it would be a consistent "unclean" style. So yes, the
above would work for me.
Reposting using the in_loop_pipeline style in pass_lim.
The tree-ssa-loop-im.c changes are ok
OK, I'll commit those.
(I suppose the other changes
are in the other patch you posted as well).
This ( https://gcc.gnu.org/ml/gcc-patches/2015-11/msg02882.html ) patch
contains changes related to adding pass_oacc_kernels2. Are those the "other
changes" you're referring to?