This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]