This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PR target/20126, RFC] loop DEST_ADDR biv replacement may fail
- From: Alexandre Oliva <aoliva at redhat dot com>
- To: Roger Sayle <roger at eyesopen dot com>
- Cc: Jakub Jelinek <jakub at redhat dot com>, <gcc-patches at gcc dot gnu dot org>, <gcc-bugzilla at gcc dot gnu dot org>
- Date: 08 Apr 2005 17:50:49 -0300
- Subject: Re: [PR target/20126, RFC] loop DEST_ADDR biv replacement may fail
- Organization: Red Hat Global Engineering Services Compiler Team
- References: <Pine.LNX.4.44.0504081042050.27703-100000@www.eyesopen.com>
On Apr 8, 2005, Roger Sayle <roger@eyesopen.com> wrote:
> Ahh, I now see the misunderstanding; you changed/fixed the other
> "safe" gcc_assert statement, and missed the important one that I was
> worried about. Sorry for the confusion.
Yep. Doh!
> Secondly:
> + if (volatile_ok
> + /* Make sure we're not adding or removing volatile MEMs. */
> + || for_each_rtx (loc, volatile_mem_p, 0)
> + || for_each_rtx (&new, volatile_mem_p, 0)
> + || ! insn_invalid_p (object))
> + return 0;
> The suggestion wasn't just to reorder the existing for_each_rtx to
> move these tests earlier, it was to confirm that the original "whole"
> instruction had a volatile memory reference in it, i.e. that this is
> a problematic case, before doing any more work.
Aaah. Clearly, I wasn't thinking right when I made the change. I'll
test your suggested change along with the gcc_assert fix.
> Sorry again for the inconvenience,
No worries. I shouldn't have rushed to making the changes and
starting a bootstrap before going to bed on a night when I was so
tired :-/
I'll post the patch when testing is complete.
--
Alexandre Oliva http://www.ic.unicamp.br/~oliva/
Red Hat Compiler Engineer aoliva@{redhat.com, gcc.gnu.org}
Free Software Evangelist oliva@{lsd.ic.unicamp.br, gnu.org}