This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
store_motion query
- From: DJ Delorie <dj at redhat dot com>
- To: gcc at gcc dot gnu dot org
- Date: Wed, 21 May 2008 16:48:49 -0400
- Subject: store_motion query
Why is store_motion doing this?
STORE_MOTION delete insn in BB 2:
(insn 8 7 27 2 dj.c:10 (parallel [
(set (mem/s/j:HI (reg/v/f:HI 26 [ s ]) [0 <variable>.buf+0 S2 A8])
(ashift:HI (reg/v:HI 27 [ n ])
(subreg:QI (reg/v:HI 27 [ n ]) 0)))
(clobber (scratch:HI))
]) 223 {ashlhi3_i} (expr_list:REG_DEAD (reg/v:HI 27 [ n ])
(nil)))
STORE MOTION replaced with insn:
(insn 27 8 9 2 dj.c:10 (set (reg:HI 29 [ <variable>.buf ])
(ashift:HI (reg/v:HI 27 [ n ])
(subreg:QI (reg/v:HI 27 [ n ]) 0))) -1 (expr_list:REG_DEAD (reg/v:HI 27 [ n ])
(nil)))
deleting insn with uid = 8.
Notice that the clobber is gone. Sure enough, later on recog fails
because the clobber is missing.
(this is gcc.dg/torture/pr24257.c at -O1 for m32c-elf)