This is the mail archive of the
mailing list for the GCC project.
Re: bit extract adjust_address versus scheduler
- From: Jim Wilson <wilson at tuliptree dot org>
- To: Alexandre Oliva <aoliva at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Thu, 01 May 2003 19:19:53 -0400
- Subject: Re: bit extract adjust_address versus scheduler
- References: <email@example.com>
Alexandre Oliva wrote:
It turned out that, even after fixing the MIPS-specific code, the
problem was still there, because the generic code insisted in
converting MEMs to byte_mode.
If you look at the doc for sign_extract/zero_extract, it clearly says
that operand1 must have byte_mode. Every port relies on this, and
probably some optimization passes too. It seems unsafe to change it in
one place without making a wholesale change.
The aliasing code should be aware of this, and should handle
sign_extract and zero_extract specially to avoid a problem.
The MIPS port changes the mode to BLKmode because we had aliasing
problems before MEM_SIZE was introduced. Since then, it should be
redundant, but was left in to be safe. Note that the MIPS port is
emitting patterns with unspec that don't use sign_extract/zero_extract,
so we need to set MEM_SIZE. Other ports shouldn't have the same problem
unless they are also using unspec.
Why is the existing code in mips.md that sets MEM_SIZE not working?