From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28083 invoked by alias); 27 Mar 2012 16:49:59 -0000 Received: (qmail 27889 invoked by uid 22791); 27 Mar 2012 16:49:56 -0000 X-SWARE-Spam-Status: No, hits=-2.9 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 27 Mar 2012 16:49:43 +0000 From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug debug/52727] [4.7/4.8 Regression] internal compiler error at dwarf2cfi.c2:685 Date: Tue, 27 Mar 2012 16:53: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-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: jakub at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 4.7.1 X-Bugzilla-Changed-Fields: CC Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 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 X-SW-Source: 2012-03/txt/msg02346.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52727 Jakub Jelinek changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rth at gcc dot gnu.org --- Comment #9 from Jakub Jelinek 2012-03-27 16:49:37 UTC --- Looks like a problem during CSA. Before *.csa we have (insn 18 is a stack adjustment after a call): (insn 18 17 19 2 (parallel [ (set (reg/f:SI 7 sp) (plus:SI (reg/f:SI 7 sp) (const_int 4 [0x4]))) (clobber (reg:CC 17 flags)) ]) pr52727.ii:29 251 {*addsi_1} (expr_list:REG_UNUSED (reg:CC 17 flags) (expr_list:REG_ARGS_SIZE (const_int 0 [0]) (nil)))) ... (insn 205 27 206 2 (set (mem:SI (pre_dec:SI (reg/f:SI 7 sp)) [0 S4 A8]) (reg:SI 0 ax [115])) pr52727.ii:31 43 {*pushsi2} (expr_list:REG_DEAD (reg:SI 0 ax [115]) (nil))) (insn 206 205 207 2 (set (reg:DF 8 st [112]) (plus:DF (float:DF (mem:SI (reg/f:SI 7 sp) [0 S4 A8])) (reg:DF 8 st [112]))) pr52727.ii:31 765 {*fop_df_2_i387} (nil)) (insn 207 206 171 2 (set (reg/f:SI 7 sp) (plus:SI (reg/f:SI 7 sp) (const_int 4 [0x4]))) pr52727.ii:31 245 {*leasi_2} (nil)) but then CSA decides to remove insn 18 and adjust insn 205, so that it no longer pushes the value, but stores it to *sp. Unfortunately it means REG_ARGS_SIZE is dropped, there is no REG_ARGS_SIZE note on insn 207. Insns 205/206/207 were introduced during split2. Not sure what to do though, adding REG_ARGS_SIZE notes in the ix86_free_from_memory and ix86_force_to_memory would mean we'd have to find out what the current REG_ARGS_SIZE depth at that point is. And to solve this in csa pass, we'd need to find out that if we are removing stack deallocation with REG_ARGS_SIZE note against later stack allocation without REG_ARGS_SIZE, there must be some following stack deallocation on which we would force REG_ARGS_SIZE note. Richard?