On 18 September 2012 07:04, Michael Hope <michael.h...@linaro.org> wrote: > On 17 September 2012 19:49, Zhenqiang Chen <zhenqiang.c...@linaro.org> wrote: >> Summary >> * Workaround the unwind issue for shrink-wrap >> * Verify Linaro tickets. >> >> Details: >> 1. Debugging the failed cases for shrink-wrap. To workaround the >> unwind issue, update arm_expand_epilogue to generate return not >> simple_return when sp is changed. > > Hmm. An interesting case for shrinkwrap is: > > int foo(void *p) { > char big-on-stack-object[543234]; > > if (p == NULL) return -1; > > lots-of-code-that-causes-spills-and calls() > } > > as shortcutting the prologue is where we get the saving. Does the > prologue normally touch SP, or is this for alloca() style functions > only?
For spilling and alloca() style functions, prologue will touch SP. For a local array, prologue will also touch SP if accessing the array element. My logs show, gcc will generate code like sub sp, sp, #size of the array ... ldr r3, [sp, offset] Thanks! -Zhenqiang _______________________________________________ linaro-toolchain mailing list linaro-toolchain@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-toolchain