axp ev4 reload problem
Jim Wilson
wilson@cygnus.com
Mon May 31 21:06:00 GMT 1999
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
More information about the Gcc-bugs
mailing list