Summary: * Test shrink-wrap code
Details: 1. 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.
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