This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/60520] stack adjustment are not merged anymore
- From: "hjl.tools at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 13 Mar 2014 22:02:23 +0000
- Subject: [Bug target/60520] stack adjustment are not merged anymore
- Auto-submitted: auto-generated
- References: <bug-60520-4 at http dot gcc dot gnu dot org/bugzilla/>
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.