[Bug tree-optimization/35292] Missing Const Prop -- union fields
pinskia at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Thu Jan 1 21:49:00 GMT 2009
------- Comment #4 from pinskia at gcc dot gnu dot org 2009-01-01 21:48 -------
RTL DSE does this optimization ...
(insn 8 7 11 2 t.c:12 (set (mem/s/c:SI (reg/f:SI 60) [0 u.ii+0 S4 A32])
(const_int 20 [0x14])) 47 {*movsi_1} (expr_list:REG_DEAD (reg/f:SI 60)
(nil)))
(insn 11 8 14 2 t.c:12 (set (reg:SI 63 [ u.cc.c+1 ])
(sign_extend:SI (mem/s/j:QI (plus:SI (reg/f:SI 60)
(const_int 1 [0x1])) [0 u.cc.c+1 S1 A8]))) 132
{extendqisi2} (expr_list:REG_DEAD (reg/f:SI 62)
(nil)))
(insn 14 11 15 2 t.c:12 (set (reg:SI 65 [ u.cc.c ])
(sign_extend:SI (mem/s/j:QI (reg/f:SI 60) [0 u.cc.c+0 S1 A32]))) 132
{extendqisi2} (expr_list:REG_DEAD (reg/f:SI 64)
(nil)))
Into:
(insn 30 7 31 2 t.c:12 (set (reg:QI 66)
(const_int 0 [0x0])) -1 (nil))
(insn 31 30 8 2 t.c:12 (set (reg:QI 67)
(const_int 20 [0x14])) -1 (nil))
(insn 8 31 11 2 t.c:12 (set (mem/s/c:SI (reg/f:SI 60) [0 u.ii+0 S4 A32])
(const_int 20 [0x14])) 47 {*movsi_1} (nil))
(insn 11 8 14 2 t.c:12 (set (reg:SI 63 [ u.cc.c+1 ])
(sign_extend:SI (reg:QI 66))) 132 {extendqisi2} (nil))
(insn 14 11 15 2 t.c:12 (set (reg:SI 65 [ u.cc.c ])
(sign_extend:SI (reg:QI 67))) 132 {extendqisi2} (expr_list:REG_DEAD
(reg/f:SI 60)
(nil)))
And then combine simplifies it into just return 20 with the memory store still
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|middle-end |tree-optimization
Keywords| |TREE
Last reconfirmed|2008-02-22 10:46:25 |2009-01-01 21:48:16
date| |
Version|unknown |4.4.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35292
More information about the Gcc-bugs
mailing list