I updated according to Jeff's latest comments (importantly, we cannot move a *logue in front of a move in general), and added some testcases.
Bootstrapping is in progress on today's trunk, powerpc64-linux and powerpc64le-linux. Is this okay to commit now? Segher Segher Boessenkool (6): separate shrink-wrap: New command-line flag, status flag, hooks, and doc dce: Don't dead-code delete separately wrapped restores regrename: Don't rename restores shrink-wrap: Shrink-wrapping for separate components rs6000: Separate shrink-wrapping shrink-wrap: Testcases for separate shrink-wrapping gcc/common.opt | 4 + gcc/config/rs6000/rs6000.c | 269 +++++++- gcc/dce.c | 9 + gcc/doc/invoke.texi | 11 +- gcc/doc/tm.texi | 63 ++ gcc/doc/tm.texi.in | 38 ++ gcc/emit-rtl.h | 4 + gcc/function.c | 15 +- gcc/regrename.c | 7 + gcc/shrink-wrap.c | 741 +++++++++++++++++++++ gcc/shrink-wrap.h | 1 + gcc/target.def | 57 ++ .../gcc.target/powerpc/shrink-wrap-separate-0.c | 22 + .../gcc.target/powerpc/shrink-wrap-separate-1.c | 18 + .../gcc.target/powerpc/shrink-wrap-separate-2.c | 26 + 15 files changed, 1265 insertions(+), 20 deletions(-) create mode 100644 gcc/testsuite/gcc.target/powerpc/shrink-wrap-separate-0.c create mode 100644 gcc/testsuite/gcc.target/powerpc/shrink-wrap-separate-1.c create mode 100644 gcc/testsuite/gcc.target/powerpc/shrink-wrap-separate-2.c -- 1.9.3