This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: in/out operands and auto-inc-dec
- From: Jeff Law <law at redhat dot com>
- To: Paul Koning <paulkoning at comcast dot net>, GCC Development <gcc at gcc dot gnu dot org>
- Date: Mon, 4 Jun 2018 07:51:51 -0600
- Subject: Re: in/out operands and auto-inc-dec
- References: <51894662-61E8-478B-B128-945F18B13095@comcast.net>
On 06/04/2018 07:31 AM, Paul Koning wrote:
> The internals manual in its description of the "matching constraint" says that it works for cases where the in and out operands are somewhat different, such as *p++ vs. *p. Obviously that is meant to cover post_inc side effects.
>
> The curious thing is that auto-inc-dec.c specifically avoids doing this: if it finds what looks like a suitable candidate for auto-inc or auto-dec optimization but that operand occurs more than once in the insn, it doesn't make the change. The result is code that's both larger and slower for machines that have post_inc etc. addressing modes. The gccint documentation suggests that it was the intent to optimize this case, so I wonder why it is avoided.
I wouldn't be terribly surprised if the old flow.c based auto-inc
discovery handled this, but the newer auto-inc-dec.c doesn't. The docs
were probably written prior to the conversion.
jeff