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
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.
regards, Ramana
Ramana Radhakrishnan ARM Ltd.
On 15 Oct 2012, at 10:57, Zhenqiang Chen zhenqiang.chen@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
On 16 October 2012 10:22, Ramana Radhakrishnan ramana.radhakrishnan@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.chen@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
On 16 October 2012 11:44, Zhenqiang Chen zhenqiang.chen@linaro.org wrote:
On 16 October 2012 10:22, Ramana Radhakrishnan ramana.radhakrishnan@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.chen@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
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 ..
What do you expect to happen with the testcases ? ICE ? wrong-code , wrong-debug info, what ?
Ramana ________________________________________ From: Zhenqiang Chen [zhenqiang.chen@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.radhakrishnan@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.chen@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
On 16 October 2012 14:58, Ramana Radhakrishnan Ramana.Radhakrishnan@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.chen@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.radhakrishnan@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.chen@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
Won't be able to look at it till later in the afternoon . got a few other things to finish up during the day.
Ramana
-----Original Message----- From: Zhenqiang Chen [mailto:zhenqiang.chen@linaro.org] Sent: 16 October 2012 08:44 To: Ramana Radhakrishnan Cc: linaro-toolchain Subject: Re: Add dwarf/unwind info in epilogue
On 16 October 2012 14:58, Ramana Radhakrishnan Ramana.Radhakrishnan@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.chen@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.radhakrishnan@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.chen@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
linaro-toolchain@lists.linaro.org