On Thu, Jan 12, 2017 at 11:02:36AM -0600, Segher Boessenkool wrote: > Hi Dominik, > > Thanks for the example. ROSBG, what a weird instruction. > > On Thu, Jan 05, 2017 at 05:46:51PM +0100, Dominik Vogt wrote: > > --- a/gcc/combine.c > > +++ b/gcc/combine.c > > @@ -11372,6 +11372,16 @@ change_zero_ext_src (subrtx_ptr_iterator *piter) > > else if (GET_CODE (x) == ZERO_EXTEND > > && SCALAR_INT_MODE_P (mode) > > && REG_P (XEXP (x, 0)) > > + && !HARD_REGISTER_P (XEXP (x, 0)) > > + && GET_MODE_PRECISION (GET_MODE (XEXP (x, 0))) > > + < GET_MODE_PRECISION (mode)) > > + { > > + /* (zero_extract (reg)) -> (and (subreg (reg) 0) (const_int)) */ > > s/zero_extract/zero_extend/ > > > * combine.c (change_zero_ext_src): Handle zero_extend without subreg. > > "Handle zero_extend of a pseudo."?
k > Okay for trunk with that. It still needs testing. I'll do that in a while. Ciao Dominik ^_^ ^_^ -- Dominik Vogt IBM Germany