Hi,

The patch enhance prepare_shrink_wrap by doing copyprop for the entry
block.  This exposes more opportunities for shrink-wrapping.  These
kinds of copies often occur when incoming argument registers are moved
to call-saved registers because their values are live across one or
more calls during the function.

* For SPECint2000 (-O3), the number of functions, which can be
shrink-wrapped, increase from 197 to 364 on ARM and from 364 to 618 on
X86-64 with the patch.
* No SPECint2000 performance regression for X86-64 and ARM.
* On X86-64 (-O3), 253.perlbmk is ~3% better.
* On ARM (A15, -O3), 453.povray is ~5% better.
* Bootstrapped and no make check regression for X86-64 and ARM A9.

Is it OK for trunk?

Thanks!
-Zhenqiang

ChangeLog:
2013-06-06  Zhenqiang Chen  <zhenqiang.c...@linaro.org>

        * function.c (prepare_shrink_wrap): Do copy prop for entry block.
        * function.h (copyprop_hardreg_forward_blocks): New.
        * regcprop.c (copyprop_hardreg_forward_blocks): New.
        (copyprop_hardreg_forward): Call copyprop_hardreg_forward_blocks.

Attachment: Enhance-shrink-wrap.patch
Description: Binary data

Reply via email to