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: Preliminary patch for PR23820 and PR24309


Hello,

> On 10/13/07, Richard Guenther <richard.guenther@gmail.com> wrote:
> > On 10/13/07, Sebastian Pop <sebpop@gmail.com> wrote:
> > > On 10/13/07, Richard Guenther <richard.guenther@gmail.com> wrote:
> > > > Huh?  That patch should make zero difference.
> > > >
> > >
> > > However, it does.  I double checked that without that patch ltrans-3
> > > fails, and with the patch it passes.  Another sequence that works for
> > > ltrans-3 is duplicating DCE before VRP.
> >
> > I checked as well and the dumps after these both passes are the same.
> > Also both passes are before loop-header copying.  The difference it
> > seems to make is that DCE removes a forwarder block which it doesn't
> > do if it runs after VRP.  For some reason.
> 
> Nope.  VRP inserts loop preheaders.  So, does
> 
> Index: tree-vrp.c
> ===================================================================
> --- tree-vrp.c  (revision 129282)
> +++ tree-vrp.c  (working copy)
> @@ -6089,7 +6089,7 @@ vrp_finalize (void)
>  static unsigned int
>  execute_vrp (void)
>  {
> -  loop_optimizer_init (LOOPS_NORMAL | LOOPS_HAVE_RECORDED_EXITS);
> +  loop_optimizer_init (AVOID_CFG_MODIFICATIONS);
>    rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa);
>    scev_initialize ();
> 
> fix it as well?

this change should cause ICEs, as we assume that loops have
just a single latch edge (and recorded exits) in scev code.

Zdenek


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