From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1587 invoked by alias); 8 Mar 2014 06:33:27 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 1550 invoked by uid 48); 8 Mar 2014 06:33:21 -0000 From: "manjian2006 at gmail dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug debug/60438] [4.9 Regression] dwarf2cfi :2239 still assert,not the same cause as PR 59575 Date: Sat, 08 Mar 2014 06:33:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: debug X-Bugzilla-Version: 4.9.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: manjian2006 at gmail dot com X-Bugzilla-Status: NEW X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 4.9.0 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2014-03/txt/msg00643.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60438 --- Comment #13 from linzj --- Thank Jakub for the short test case and the revision. Before revision 205498,the prologue is: (insn/f:TI 77 78 79 2 (parallel [ (set (reg/f:SI 7 sp) (plus:SI (reg/f:SI 7 sp) (const_int -36 [0xffffffffffffffdc]))) (clobber (reg:CC 17 flags)) (clobber (mem:BLK (scratch) [0 A8])) ]) 1.cpp:11 798 {pro_epilogue_adjust_stack_si_add} (expr_list:REG_UNUSED (reg:CC 17 flags) (nil))) Then r205498: (insn/f:TI 75 76 77 2 (parallel [ (set (reg/f:SI 7 sp) (plus:SI (reg/f:SI 7 sp) (const_int -40 [0xffffffffffffffd8]))) (clobber (reg:CC 17 flags)) (clobber (mem:BLK (scratch) [0 A8])) ]) 1.cpp:11 798 {pro_epilogue_adjust_stack_si_add} (expr_list:REG_UNUSED (reg:CC 17 flags) (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:SI 7 sp) (plus:SI (reg/f:SI 7 sp) (const_int -40 [0xffffffffffffffd8]))) See the added REG_CFA_ADJUST_CFA?,that make the cur_cfa->reg == dw_stack_pointer_regnum.Before r205498,without this expr,cur_cfa->reg == dw_frame_pointer_regnum. And we can see r205498 actually makes the data looks right.Because we have omitted the frame pointer, so cur_cfa->reg == dw_frame_pointer_regnum makes no sense.So the real problem is still the jump2 pass.It should never cross jump between two blocks without the same REG_ARGS_SIZE.