https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120870
--- Comment #48 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Uroš Bizjak from comment #47)
> Prologue and epilogue emit:
Oh, pro_and_epilogue should save DRAP register after RSP is modified and
restore it before it is needed, like without preserve_none attribute for caller
function:
(insn/f 36 35 37 2 (parallel [
(set (reg/f:DI 7 sp)
(and:DI (reg/f:DI 7 sp)
(const_int -32 [0xffffffffffffffe0])))
(clobber (reg:CC 17 flags))
]) "pr120870-1.c":17:1 -1
(nil))
(insn/f 37 36 38 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp)) [0 S8 A8])
(mem/c:DI (plus:DI (reg:DI 41 r13)
(const_int -8 [0xfffffffffffffff8])) [2 S8 A8]))
"pr120870-1.c":17:1 -1
(nil))
...
(insn/f 57 56 58 2 (set (reg:DI 41 r13)
(mem:DI (post_inc:DI (reg/f:DI 7 sp)) [0 S8 A8])) "pr120870-1.c":21:1
-1
(expr_list:REG_CFA_DEF_CFA (reg:DI 41 r13)
(nil)))
...
(insn/f 59 58 60 2 (set (reg/f:DI 7 sp)
(plus:DI (reg:DI 41 r13)
(const_int -16 [0xfffffffffffffff0]))) "pr120870-1.c":21:1 -1
(expr_list:REG_CFA_DEF_CFA (plus:DI (reg/f:DI 7 sp)
(const_int 16 [0x10]))
(nil)))