------- Comment #4 from bonzini at gnu dot org 2006-03-23 14:47 ------- Looks like we have a (subreg (mem)) which this guard misses:
/* If a memory location is needed for the copy, make one. */ if (in != 0 && (REG_P (in) || GET_CODE (in) == SUBREG) && reg_or_subregno (in) < FIRST_PSEUDO_REGISTER && SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (reg_or_subregno (in)), class, inmode)) get_secondary_mem (in, inmode, opnum, type); And there is a similar occurrence for output reloads some 30 lines below. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26826