On Thu, 24 Aug 2006, Paolo Bonzini wrote: > Anyway, I was not meaning to *not* account for anything, but just to > replace REG_OK_STRICT with checks on reload_in_progress and > reload_completed. I understand the semantics that you wanted for 'U'. > > The bug may be that in some cases, 'U' is checked for memory_address_p > instead of strict_memory_address_p even after reload, in particular when > it is recog.c that is constraining the operands.
If so, not more buggy than other targets that use REG_OK_STRICT a bit more indirectly (like using REG_OK_FOR_BASE_P directly or indirectly in their EXTRA_CONSTRAINT or GO_IF_LEGITIMATE_ADDRESS). Some history I found on this change: <URL:http://gcc.gnu.org/ml/gcc-patches/2001-12/msg02585.html> <URL:http://gcc.gnu.org/ml/gcc-patches/2001-12/msg02501.html>. Sorry I don't remember more, in particular not where I got the idea to choose between strict_memory_address_p and memory_address_p. I had the flu at the time, so I might have actually found it up myself. :-) If the general replacement of REG_OK_STRICT is indeed reload_in_progress || reload_completed, then the substitution *should* of course be in principle be correct (as in: subject to testing. ;) brgds, H-P