[PATCH ARM]: Fix more -mapcs-frame failures

Zhenqiang Chen zhenqiang.chen@linaro.org
Mon Feb 24 10:11:00 GMT 2014


Please also check the two test cases in patch
https://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg72712.html

Thanks!
-Zhenqiang

On 24 February 2014 17:11, Christian Bruel <christian.bruel@st.com> wrote:
> This patch improves the one sent previously,
> (http://gcc.gnu.org/ml/gcc-patches/2014-02/msg01159.html),  to fix a few
> more failures in the testsuite that could arise with shrink-wrap and
> -fexceptions.
>
> To recall, the problem that it fixes is that with -mapcs-frame :
>
> -  the epilogue pops as
>
>      sub     sp, fp, #12         @ does not set FRAME_RELATED_P
>      ldmia   sp, {fp, sp, lr}  @ XXX assert  def_cfa->reg is FP instead
> of SP
>
> - with vrp this is worse, we have
>
>        fldmfdd ip!, {d8}        @ FRAME_RELATED_P
>        sub     sp, fp, #20       ...
>        ldmfd   sp, {r3, r4, fp, sp, pc}  @ XXX assert def_cfa->reg is IP
> instead of SP,
>
> Fixed by inserting a REG_CFA_DEF_CFA note, fixing the arm_unwind_emit
> machinery and setting the FRAME_RELATED_P . The comment says :
>
>     /* The INSN is generated in epilogue.  It is set as RTX_FRAME_RELATED_P
>        to get correct dwarf information for shrink-wrap.  We should not
>        emit unwind information for it because these are used either for
>        pretend arguments or notes to adjust sp and restore registers from
>        stack.  */
>
> the  testsuite score improves without regression (improvements from -g
> and -fexeptions tests)
>
>         === gcc Summary for arm-sim//-mapcs-frame ===
>
> # of expected passes        77545
> # of unexpected failures    31
> # of unexpected successes    2
> # of expected failures        172
> # of unsupported tests        1336
>
>          === g++ Summary for arm-sim//-mapcs-frame ===
>
> # of expected passes        50116
> # of unexpected failures    9
> # of unexpected successes    3
> # of expected failures        280
> # of unsupported tests        1229
>
> instead of
>
>         === gcc Summary for arm-sim//-mapcs-frame ===
>
> # of expected passes        77106
> # of unexpected failures    500
> # of unexpected successes    2
> # of expected failures        172
> # of unresolved testcases    111
> # of unsupported tests        1336
>
>         === g++ Summary for arm-sim//-mapcs-frame ===
>
> # of expected passes        50021
> # of unexpected failures    136
> # of unexpected successes    3
> # of expected failures        280
> # of unsupported tests        1229
>
> Comments ? OK for trunk ?
>
> Many thanks
>
>



More information about the Gcc-patches mailing list