On Fri, Dec 23, 2016 at 05:54:01PM +0100, Georg-Johann Lay wrote:
> Segher Boessenkool schrieb:
> >On Thu, Dec 22, 2016 at 04:18:34PM +0100, Georg-Johann Lay wrote:
> >>>>>If you don't have instruction scheduling subregs of mem are allowed (and
> >>>>>are counted as registers).  Combine asks recog, and it
> >>>>>think this is fine.
> >>>>>
> >>>>>Why does reload use r31 here?  Why does it think that is
> >>>>>valid for HImode?
> >>>>I can't tell you, all I'm seeing bunch of new FAILs after r243578.
> >
> >The avr port does not define CANNOT_CHANGE_MODE_CLASS.  It probably
> >should.
> 
> Thanks for that pointer, I'll try it as soon as I can.
> 
> >>>>i.e. the paradoxical subreg could be resolved somehow and R25 is
> >>>>uninitialized.  It this the purpose of the combine change to come
> >>>>up with uninitialized regs because it is known that just the
> >>>>initialized parts are used by the code?
> >
> >The purpose of the combine change is to write widening extracts in a
> >more general form, so that backends for processors that can do such
> >more general things do not have to write hundreds (literally) extra
> >patterns for all the cases that could be written as zero_extract.
> 
> One problem is that not all expressions are canonicalized and combine
> might come up with many different kinds of representations for the
> same action.  One common example is inserting one bit.  This might
> be represented as (set (zero_extract)) or as set with masking and
> shifting around or as (set (if_then_else)), with different
> representations if the sign bit is involved or if the source
> bit position is the same or lower or higher than the destination's
> bit position.

I'm working on patches to get more sensible simplify results in
some of these cases, like extracting the sign bit.  Not really
canonical, but rather that dealing with every odd combination it's
better to suppress them.

Ciao

Dominik ^_^  ^_^

-- 

Dominik Vogt
IBM Germany

Reply via email to