[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