On 16 October 2012 11:44, Zhenqiang Chen <zhenqiang.c...@linaro.org> wrote: > On 16 October 2012 10:22, Ramana Radhakrishnan > <ramana.radhakrish...@arm.com> wrote: >> Zhenqiang, >> >> I've been spending sometime scratching my head around this one tonight. Can >> you show me the original shrink-wrap patch as well the test case that >> triggers this failure ? I have my suspicion on something but need to run a >> few experiments before commenting further.
sibcall.c is another case. workaround.patch is to block some optimizations, which will lead to dwarf check fail due to incorrect dwarf info in epilogue. If epilogue has the correct dwarf info, the workaround patch is not needed and the shrink-wrap patch can be simplified. Thanks! -Zhenqiang > >> On 15 Oct 2012, at 10:57, Zhenqiang Chen <zhenqiang.c...@linaro.org> wrote: >> >>> Hi Ramana, >>> >>> The attached file is a reference patch to add more dwarf/unwind info >>> in epilogue. Please help to review. >>> >>> Without the patch, dwarf check fail for the following cases when >>> enabling shrink-wrap: >>> >>> tst ... L1 //simple_return >>> push ... >>> ... >>> pop ... //.cfa_offset is not 0 >>> L1: >>> bx lr //common simple_return >>> >>> Thanks! >>> -Zhenqiang<dwarf.patch>_______________________________________________ >>> linaro-toolchain mailing list >>> linaro-toolchain@lists.linaro.org >>> http://lists.linaro.org/mailman/listinfo/linaro-toolchain >> >>
unsigned char a, b, d, f, g; int test(); int baz (int c) { if (c == 0) return test(); if (b & 1) { g = 0; int e = (a & 0x0f) - (g & 0x0f); if (!a) b |= 0x80; a = e + test(); f = g/5 + a*3879 + b *2985; } else { f = g + a*39879 + b *25; } return test(); }
workaround.patch
Description: Binary data
_______________________________________________ linaro-toolchain mailing list linaro-toolchain@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-toolchain