[Bug target/60520] stack adjustment are not merged anymore
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Mar 13 22:02:00 GMT 2014
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.
More information about the Gcc-bugs
mailing list