This is the mail archive of the gcc-bugs@gcc.gnu.org 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]

Re: axp ev4 reload problem


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


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