From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25788 invoked by alias); 11 Jan 2013 15:01:51 -0000 Received: (qmail 25663 invoked by uid 48); 11 Jan 2013 15:01:19 -0000 From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/55941] [4.8 Regression] Strange copy of double (in struct) to stack Date: Fri, 11 Jan 2013 15:01:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Keywords: X-Bugzilla-Severity: normal 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: --- 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: 2013-01/txt/msg01035.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55941 Jakub Jelinek changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rth at gcc dot gnu.org --- Comment #2 from Jakub Jelinek 2013-01-11 15:01:18 UTC --- I'd hope that the subreg pass could be able to figure out something out of: (insn 4 3 5 2 (set (reg:TI 63 [ x ]) (const_int 0 [0])) pr55941.c:2 85 {*movti_internal_rex64} (nil)) (insn 5 4 6 2 (set (subreg:DF (reg:TI 63 [ x ]) 0) (reg:DF 64 [ x ])) pr55941.c:2 131 {*movdf_internal_rex64} (expr_list:REG_DEAD (reg:DF 64 [ x ]) (nil))) (insn 6 5 8 2 (set (subreg:DF (reg:TI 63 [ x ]) 8) (reg:DF 22 xmm1 [ x+8 ])) pr55941.c:2 131 {*movdf_internal_rex64} (expr_list:REG_DEAD (reg:DF 22 xmm1 [ x+8 ]) (nil))) (insn 8 6 9 2 (set (reg:DF 67 [ D.1730 ]) (reg:DF 23 xmm2 [ y ])) pr55941.c:2 131 {*movdf_internal_rex64} (expr_list:REG_DEAD (reg:DF 23 xmm2 [ y ]) (nil))) (note 9 8 12 2 NOTE_INSN_FUNCTION_BEG) (insn 12 9 17 2 (set (reg:DF 67 [ D.1730 ]) (plus:DF (reg:DF 67 [ D.1730 ]) (subreg:DF (reg:TI 63 [ x ]) 0))) pr55941.c:2 785 {*fop_df_comm_sse} (expr_list:REG_DEAD (reg:TI 63 [ x ]) (nil))) (all accesses to pseudo 63 in the listed insns), but it only drops the insn 6, but doesn't figure out the only user uses the low part and thus propagate the setter. Or perhaps should forwprop propagate something like that?