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)))

Reply via email to