This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/60520] stack adjustment are not merged anymore


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60520

--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> ---
pro_and_epilogue adds an epilogue after BB 4:

(insn 12 11 15 3 (parallel [
            (set (reg/f:SI 7 sp)
                (plus:SI (reg/f:SI 7 sp)
                    (const_int 16 [0x10])))
            (clobber (reg:CC 17 flags))
        ]) pr60520.c:7 265 {*addsi_1}
     (expr_list:REG_ARGS_SIZE (const_int 0 [0])
        (nil)))
;;  succ:       4 [100.0%]  (FALLTHRU)
;; lr  out      7 [sp]

;; basic block 4, loop depth 0, count 0, freq 3898, maybe hot
;;  prev block 3, next block 6, flags: (REACHABLE, RTL, MODIFIED)
;;  pred:       3 [100.0%]  (FALLTHRU)
;; bb 4 artificial_defs: { }
;; bb 4 artificial_uses: { u-1(7){ }}
;; lr  in       7 [sp]
;; lr  use      7 [sp]
;; lr  def     
(code_label 15 12 16 4 1 "" [0 uses])
(note 16 15 27 4 [bb 4] NOTE_INSN_BASIC_BLOCK)
(note 27 16 28 4 NOTE_INSN_EPILOGUE_BEG)
(insn/f 28 27 32 4 (parallel [
            (set (reg/f:SI 7 sp)
                (plus:SI (reg/f:SI 7 sp)
                    (const_int 12 [0xc])))
            (clobber (reg:CC 17 flags))
            (clobber (mem:BLK (scratch) [0  A8]))
        ]) pr60520.c:8 -1
     (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:SI 7 sp)
            (plus:SI (reg/f:SI 7 sp)
                (const_int 12 [0xc])))
        (nil)))
;;  succ:       6 [100.0%]  (FALLTHRU)
;; lr  out      7 [sp]

It is quite hard to optimize 2 stack adjustment cross basic blocks.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]