On 11 September 2012 10:34, Zhenqiang Chen zhenqiang.chen@linaro.org wrote:
On 11 September 2012 09:46, Michael Hope michael.hope@linaro.org wrote:
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?
ARM mode had supported conditional return. We can update current patterns or add new instruction patterns to support it for THUMB mode. I will work on it later.
Just have a try. In THUMB mode, conditional instruction should be in IT block. To support conditional return, we have to generate an IT block. In this case, one more instruction is added for the fall through path.
Thanks! -Zhenqiang