This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix PR62081


Richard Biener wrote:
> 
> The following fixes missing dominator computation before fixing loops.
> Rather than doing even more such weird stuff in a pass gate function
> this puts this into a new pass scheduled before the loop passes gate.
> 

Ok.

> +unsigned int
> +pass_fix_loops::execute (function *)
> +{

I would add an early exit if there are no loops in the function
(like in the original code below...)

    if (!loops_for_fn (fn))
      return 0;

> +  if (loops_state_satisfies_p (LOOPS_NEED_FIXUP))
> +    {
> +      calculate_dominance_info (CDI_DOMINATORS);
> +      fix_loop_structure (NULL);
> +    }
> +  return 0;
> +}

[...]

>  /* Gate for loop pass group.  The group is controlled by -ftree-loop-optimize
>     but we also avoid running it when the IL doesn't contain any loop.  */
>  
> @@ -57,9 +107,6 @@ gate_loop (function *fn)
>    if (!loops_for_fn (fn))
>      return true;

... here.

>  
> -  /* Make sure to drop / re-discover loops when necessary.  */
> -  if (loops_state_satisfies_p (LOOPS_NEED_FIXUP))
> -    fix_loop_structure (NULL);
>    return number_of_loops (fn) > 1;
>  }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]