This is the mail archive of the
mailing list for the GCC project.
Re: Combine performance regression (was: Fix PR target/18701)
- From: Hans-Peter Nilsson <hp at bitrange dot com>
- To: Roger Sayle <roger at eyesopen dot com>
- Cc: Ulrich Weigand <uweigand at de dot ibm dot com>, gcc-patches at gcc dot gnu dot org
- Date: Thu, 20 Jan 2005 17:48:07 -0500 (EST)
- Subject: Re: Combine performance regression (was: Fix PR target/18701)
- References: <Pine.LNX.email@example.com>
On Thu, 20 Jan 2005, Roger Sayle wrote:
> Placing a SUBREG around a MEM doesn't widden it. Changing the
> mode of the MEM does. You've diagnosed the problem correctly, but
> you've not correctly identified/disabled the errant transformation
> that was causing it.
I have to revisit, sit down and stare at it for an hour or so.
I haven't seen anything that can directly convinces me the patch
was wrong, FWIW. A memory access *was* widened, and this patch
was stopping it, by the same method that other invalid MEM
transformations were stopped (by returning a special CLOBBER;
not very clean IMHO but not my construct).
You seem to mean to remove the if-clause entirely, where I just
added an including condition. If so I recommend you test the
patch on just about every GCC target, at least those with
peculiar sign/zero-extending memory semantics.
It could very well have been the other bug causing that mem
widening, and that the issue is now moot.
> In fact, I think the other fix for PR18701
> that you committed may have been the true cause and the correct fix.
Well, yes, as mentioned at the time, that's the "main" patch.
This widening bug was just spotted in the process and I was a
bit shocked when you approved it without the other patch. :-)