This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: axp ev4 reload problem
- To: Richard Henderson <rth at cygnus dot com>
- Subject: Re: axp ev4 reload problem
- From: Jim Wilson <wilson at cygnus dot com>
- Date: Wed, 05 May 1999 19:43:36 -0700
- cc: egcs-bugs at egcs dot cygnus dot com
It isn't a reload_in* pattern in this case though. It is a simple call to
movqi with a pseudo as the source. The alpha movqi pattern has a special
check for pseudo's during reload
|| (reload_in_progress && GET_CODE (operands[1]) == REG
&& REGNO (operands[1]) >= FIRST_PSEUDO_REGISTER)
and it handles them like a MEM. aligned_memory_operand knows that it might
be passed in a pseudo, but get_aligned_mem does not. So there seems to be
an inconsistency in the alpha movqi code.
I think the problem is your Apr 14 change, which made some changes to
get_aligned_mem which are correct when called from a reload_in* pattern,
but which are incorrect when called from a mov* pattern.
This particular problem seems to be alpha specific, because old alphas don't
have byte/short load instructions, and end up synthesizing them in the mov*
patterns during reload. Very few other ports need to do this, and hence won't
see this problem. If you can find a better way to solve this problem, then
some of the complexity in the alpha.md file can go away.
I think that passing a MEM instead of a pseudo to the mov* patterns during
reload would be a risky change, and I don't think this specific problem
justifies making this change.
Jim