This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: bit extract adjust_address versus scheduler

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 that sets MEM_SIZE not working?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]