This sequence of patches adds support for epilogue generation in RTL. This is the first part of Sameera's work on ARM prologue/epilogue. Sameera Deshpande posted it for review in December 2011, having addressed all previous comments: http://gcc.gnu.org/ml/gcc-patches/2011-12/msg00049.html. The latest version hasn't been approved yet. Originally, it was split into two patches: [1/2]: Thumb2 epilogue in RTL [2/2]: ARM epilogue in RTL I rebased Sameera's patches, made small changes in the patterns and fixed RTL epilogue generated for -mapcs-frame. To make reviewing easier, I split the patches into smaller steps: * Reorganization - already committed upstream. * New insn and expand patterns - main functionality change. * Cleanup of dead code.
Here is the list of patches: 1-update-predicate.patch 2-patterns.patch 3-patterns-vfp.patch 4-expand-epilog-apcs-frame.patch 5-expand-epilog.patch 6-simple-return.patch 7-expand-thumb2-return.patch 8-remove-dead-code.patch Testing: * Crossbuild for target arm-none-eabi with cpu cortex-a9 neon softfp and tested in three configuration: -marm (default), -mthumb, -mapcs-frame. No regression on qemu. * Crossbuild for target arm-none-eabi thumb2 with cpu cortex-m3. No regression on qemu. * Crossbuild for target arm-none-eabi thumb1 with cpu arm7tdmi and arm1136jf-s. No regression on qemu. * Crossbuild for target arm-linux-gnueabi with cpu cortex-a9 with eglibc and used this compiler to build AEL linux kernel. It boots successfully. * Bootstrap the compiler on cortex-a8 successfully for --languages=c,c++,fortran and used this compiler to build gdb. No regression with check-gcc and check-gdb. Notes: * The patches are to be applied in the above order. * The patches are not intended to be used individually. * The patches have been tested only as a sequence. * The patches have been tested on gcc from 20 March 2012 (fsf trunk r185582 of gcc-4.8 stage 1). The patches apply cleanly to current trunk (r188056). * The patches have not been explicitly tested with any FPA variants (which are deprecated in 4.7 and expected to become obsolete in 4.8). Ok for trunk? Thank you, Greta