Improve unrolled size estimates

H.J. Lu hjl.tools@gmail.com
Tue May 12 15:04:00 GMT 2009


On Mon, May 11, 2009 at 1:41 PM, Jan Hubicka <hubicka@ucw.cz> wrote:
> Hi,
> it turned out that there is some extra testsuite compensation neccesary
> since in vectorizer testsuite we now tend fully unroll internal loops
> preventing vectorization.  In some cases unrolling makes sense, in some
> cases we make code size growth because we account loads and stores to
> have size of 0 I will fix by followup patch.  Still it seems to make
> sense to increase iteration counts here to make tests more robust, it is
> not first time I am hitting this problem with cost improvements.  Note
> that in slp-3.c I didn't managed to increase loop sufficiently, so I
> just updated the count.  It is going to get fixed by the load/store
> cases.  I also added bogus warning for Wunreachable-2.c testcase that
> got broken by patch fixing costs of calling functions with prototype
> only.
>
> Bootstrapped/regtested x86_64-linux, will commit it shortly.
>
> Honza
>
>        * tree-ssa-loop-ivcanon.c: Include target.h
>        (struct loop_size): new structure.
>        (constant_after_peeling): New predicate.
>        (tree_estimate_loop_size): New function.
>        (estimated_unrolled_size): Rewrite for new estimates.
>        (try_unroll_loop_completely): Use new estimates.
>        * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
>
>        * gcc.dg/tree-ssa/pr21829.c: Simplify matching since
>        we now optimize better.
>        * gcc.dg/Wunreachable-8.c: Bogus warnings now come
>        out at different places.
>        * gcc.dg/vect/vect-92.c: Increase loop iteration count to prevent
>        unroling.
>        * gcc.dg/vect/vect-76.c: Likewise.
>        * gcc.dg/vect/vect-70.c: Likewise.
>        * gcc.dg/vect/vect-66.c: Likewise.
>        * gcc.dg/vect/no-section-anchors-vect-66.c: Likewise.
>        * gcc.dg/vect/slp-3.c: One of loops gets now fully unrolled.

This caused:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40123

It only happens on Linux/x86-64 with -m32.


-- 
H.J.



More information about the Gcc-patches mailing list