[RFC PATCH, i386]: Enable post-reload compare elimination pass

Jeff Law law@redhat.com
Thu May 11 18:37:00 GMT 2017


On 05/10/2017 01:05 PM, Uros Bizjak wrote:
> On Wed, May 10, 2017 at 5:18 PM, Uros Bizjak <ubizjak@gmail.com> wrote:
>> On Wed, May 10, 2017 at 4:27 PM, Jakub Jelinek <jakub@redhat.com> wrote:
>>> On Tue, May 09, 2017 at 06:06:47PM +0200, Uros Bizjak wrote:
>>>> Attached patch enables post-reload compare elimination pass by
>>>> providing expected patterns (duplicates of existing patterns with
>>>> setters of reg and flags switched in the parallel) for flag setting
>>>> arithmetic instructions.
>>>>
>>>> The merge triggers more than 3000 times during the gcc bootstrap,
>>>> mostly in cases where intervening memory load or store prevents
>>>> combine from merging the arithmetic insn and the following compare.
>>>>
>>>> Also, some recent linux x86_64 defconfig build results in ~200 merges,
>>>> removing ~200 test/cmp insns. Not much, but I think the results still
>>>> warrant the pass to be enabled.
>>>
>>> Isn't the right fix instead to change the compare-elim.c pass to either
>>> accept both reg vs. flags orderings in parallel, or both depending
>>> on some target hook, or change it to the order i386.md and most other
>>> major targets use and just fix up mn10300/rx (and aarch64?) to use the same
>>> order?
> 
> Attached patch changes compare-elim.c order to what i386.md expects.
> 
> Thoughts?
Haven't looked at the patch itself.  But I do have the necessary bits to 
convert the mn103 port.  It was slightly more than just fixing the md 
file, but nothing significant or time consuming.  The net result is 100% 
identical code for newlib before your patch vs after your patch w/mn103 
converted.

Hell, it was easy enough, I'll take a cut at the rx port.

jeff



More information about the Gcc-patches mailing list