------- Comment #10 from bernds at gcc dot gnu dot org 2010-07-22 20:02 ------- Huh, I thought I'd replied to this weeks ago - probably wasn't logged in.
Reload can't determine the required structure of a memory address from a predicate name, so it ignores predicates and only looks at constraints. One way of fixing this might be to make the mem explicit in the pattern, and require a register_operand as its address. It might also work to keep the memory_operand but add a constraint that only allows single-reg addresses; if that fails as you say maybe you need to define secondary reloads for it? Can't tell for sure without seeing the code and the failure. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44484