https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95021
--- Comment #8 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to rguent...@suse.de from comment #6) > On Tue, 12 May 2020, hjl.tools at gmail dot com wrote: > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95021 > > > > --- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> --- > > The problem is since df_lr_bb_local_compute has > > > > /* If the def is to only part of the reg, it does > > not kill the other defs that reach here. */ > > if (!(DF_REF_FLAGS (def) & (DF_REF_PARTIAL | DF_REF_CONDITIONAL))) > > { > > unsigned int dregno = DF_REF_REGNO (def); > > bitmap_set_bit (&bb_info->def, dregno); > > bitmap_clear_bit (&bb_info->use, dregno); > > } > > > > it doesn't consider > > > > (insn 40 39 25 3 (set (subreg:SI (reg/v:DI 85 [ target ]) 4) > > (subreg:SI (reg:V2DI 90) 0)) "x.i":17:7 -1 > > (nil)) > > > > as a def. > > Which it isn't since it sets the upper half of reg:DI 85 only. True. But it is clearly incorrect that reg:DI 85 is live at function entrance.