https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81443
--- Comment #17 from rguenther at suse dot de <rguenther at suse dot de> --- On Tue, 23 Jan 2018, ebotcazou at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81443 > > Eric Botcazou <ebotcazou at gcc dot gnu.org> changed: > > What |Removed |Added > ---------------------------------------------------------------------------- > CC| |rguenth at gcc dot gnu.org > > --- Comment #16 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > Richard, would you be OK to apply a stopgap fix for the 7.3 release? > > Index: rtlanal.c > =================================================================== > --- rtlanal.c (revision 256841) > +++ rtlanal.c (working copy) > @@ -4976,7 +4976,7 @@ num_sign_bit_copies1 (const_rtx x, machi > if (WORD_REGISTER_OPERATIONS > && load_extend_op (inner_mode) == SIGN_EXTEND > && paradoxical_subreg_p (x) > - && (MEM_P (SUBREG_REG (x)) || REG_P (SUBREG_REG (x)))) > + && MEM_P (SUBREG_REG (x))) > return cached_num_sign_bit_copies (SUBREG_REG (x), mode, > known_x, known_mode, known_ret); > break; > > It's a partial reversion of my change for PR rtl-optimization/59461, hence > only > a small pessimization for 64-bit WORD_REGISTER_OPERATIONS SIGN_EXTEND targets. Yes, that works for me. It looks like after the above change this part of the code is exactly the same as on the GCC 6 branch (after hookizing LOAD_EXTEND_OP)