This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch] Loop reversal (merge from killloop-branch)
On Thu, 2006-01-26 at 18:30 +0100, Zdenek Dvorak wrote:
> Hello,
>
> > > Changes to ivopts improve handling of loop exit conditions a bit, so
> > > that it takes advantage of the reversed loop a bit better (some
> > > improvements will follow in further patches).
> > >
> > > The patch also fixes several bugs in tree-data-ref revealed by it. Most
> > > importantly, tree-data-ref used to check whether two objects alias just
> > > by comparing their tags for equality, not taking may_aliases into
> > > account.
> >
> > Testcases for these bugs?
>
> gcc.target/i386/pr20204.c, gcc.c-torture/execute/stdarg-3.c, and two or
> three other I haven't investigated, but got fixed by the changes to
> tree-data-ref.
>
> > (Also, the fixes for this should be submitted seperately)
>
> Why exactly? I think it is quite common practice to send fixes for
> bugs revealed by a patch together with it.
So they can be reviewed separately, since they are bugs separate from
your pass?
Or at least, please comment on what each thing is fixing, preferabbly in
the source code.
For example,
*************** find_data_references_in_loop (struct loo
*** 3698,3703 ****
--- 3744,3751 ----
one_inserted = true;
}
}
+ else if (TREE_CODE (opnd0) != SSA_NAME)
+ goto insert_dont_know_node;
if (TREE_CODE (opnd1) == ARRAY_REF
|| TREE_CODE (opnd1) == INDIRECT_REF)
*************** find_data_references_in_loop (struct loo
*** 3709,3714 ****
--- 3757,3766 ----
one_inserted = true;
}
}
+ else if (handled_component_p (opnd1)
+ || (SSA_VAR_P (opnd1)
+ && TREE_CODE (opnd1) != SSA_NAME))
+ goto insert_dont_know_node;
if (!one_inserted)
goto insert_dont_know_node;
Why are these necessary when it should fall into the (!one_inserted)
case?