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();
}

Attachment: workaround.patch
Description: Binary data

_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to