[PATCH, RFC] combine: Don't create insv insns unless HAVE_insv

Jeff Law law@redhat.com
Tue Jul 14 04:50:00 GMT 2015


On 07/12/2015 07:56 AM, Segher Boessenkool wrote:
> Currently combine tries to make assignments to bitfields (of a register)
> whenever it can.  If the target has no insv pattern, the result will not
> ever match (if the MD is sane at all).  Doing insv on registers generates
> worse code than what you get if you express things directly (with and/ior),
> so many targets do not _want_ to have insv patterns.
>
> This patch changes combine to not generate insv patterns if the target
> does not have any.
>
> Bootstrapped and regression checked on powerpc64-linux (with and without
> insv patterns there).  Also built on many other targets, for many months.
>
> I'm vaguely aware there have been changes to extzv etc. so there now are
> extzv<mode>; I'll investigate if that means anything for insv as well.
> It's also a new #ifdef HAVE_xxx.  But we're not clean there yet so I hope
> to get away with that ;-)
>
> Comments?  Complaints?
Well, I'd rather avoid the #ifdef.  Just because we aren't clean yet 
doesn't mean we need to introduce more stuff to clean up later.

It'd also be nice to have a testcase or two.  Guessing they'd be target 
dependent, but that's OK with me.

jeff



More information about the Gcc-patches mailing list