On 10 September 2012 18:47, Zhenqiang Chen zhenqiang.chen@linaro.org wrote:
Summary:
- Test shrink-wrap code
Details:
- Add simple_return support in function thumb2_expand_return for
shrink-wrap. Here is the make check status
- One new fail is due to code size increase. We'd disable it when
optimizing function for size on THUMB2.
- Other new fails is due to dwarf info. Root cause is ICE at function
maybe_record_trace_start
gcc_checking_assert (cfi_row_equal_p (cur_row, ti->beg_row));
Here is the failed code segment:
tst ... L1 push {r4} ... ldr r4, ... L1: bx lr // common simple return from two branches.
Hmm, any chance of a conditional return instead in the future?
Here are the results for cur_row and ti->beg_row of trace starting at L1:
{cfa = {offset = 0, base_offset = 0, reg = 13, indirect = 0, in_use = 0}, cfa_cfi = 0x0, reg_save = 0x0} {cfa = {offset = 4, base_offset = 0, reg = 13, indirect = 0, in_use = 0}, cfa_cfi = 0x0, reg_save = 0x7ffff726ab70}
Try gcc-linaro-4.5-2011.03. It does not generate the common bx lr.
test L1 push {r4} ... pop {r4} bx lr L1: bx lr
There is similar bug about it. But the fix is useless for us: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50833
Plans:
- Continue shrink-wrap task.
Best regards! -Zhenqiang
linaro-toolchain mailing list linaro-toolchain@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-toolchain