On 16 October 2012 14:58, Ramana Radhakrishnan
<ramana.radhakrish...@arm.com> wrote:
> shrink-wrap.patch doesn't apply cleanly to the revision you suggest. If you 
> give a clean patch and some description of what happens I might be able to 
> take a look ..

Please try the new one. With the patch, your build might fail when
build libraries.

    internal compiler error: in maybe_record_trace_start, at dwarf2cfi.c:2224

To get a toolchain, just remove the line at dwarf2cfi.c:2224.

    gcc_checking_assert (cfi_row_equal_p (cur_row, ti->beg_row));

After build OK. Re add the line at dwarf2cfi.c:2224 and make install.

> What do you expect to happen with the testcases ? ICE ? wrong-code , 
> wrong-debug info, what ?

All cases will be ICE due to wrong debug info.
My option is: -mthumb -mcpu=cortex-m3 -O2 -g
For all cases, it will ICE.

   internal compiler error: in maybe_record_trace_start, at dwarf2cfi.c:2224

The root cause:
Without shrink-wrap, the code is like

push
...
pop
return //The return has only one predecessor. No dwarf check for this
case, even if the dwarf info is wrong.

With shrink-wrap, the basic code is like

tst ... L1
push
...
pop
return  // no dwarf check for it
L1:
simple_return  // no dwarf check for it

After some optimization the code is like

tst ... L1
push
...
pop
// ************The return is optimized *********
L1:
simple_return  //Now the simple_return has two predecessors. dwarf
check fail at this block if the debug info is wrong.

Thanks!
-Zhenqiang


> ________________________________________
> From: Zhenqiang Chen [zhenqiang.c...@linaro.org]
> Sent: 16 October 2012 04:44
> To: Ramana Radhakrishnan
> Cc: linaro-toolchain
> Subject: Re: Add dwarf/unwind info in epilogue
>
> 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.
>
> p4.patch is from the mail-list discussion:
> http://old.nabble.com/Shrink-wrapping%3A-Introduction-to31220423.html
>
> shrink-wrap.patch is my patch against r192445.
>
> *.c are test cases: -O2 -g
>
> There is no fail in gcc-linaro-4.5 since "simple_return" and "normal
> return" can not be optimized as one common return.
>
> 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
>>
>>
>

Attachment: shrink-wrap.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