On 18 September 2012 07:04, Michael Hope michael.hope@linaro.org wrote:
On 17 September 2012 19:49, Zhenqiang Chen zhenqiang.chen@linaro.org wrote:
Summary
- Workaround the unwind issue for shrink-wrap
- Verify Linaro tickets.
Details:
- 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