This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/55941] [4.8 Regression] Strange copy of double (in struct) to stack
- From: "jakub at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 11 Jan 2013 15:01:18 +0000
- Subject: [Bug target/55941] [4.8 Regression] Strange copy of double (in struct) to stack
- Auto-submitted: auto-generated
- References: <bug-55941-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55941
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rth at gcc dot gnu.org
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 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?