https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61844

--- Comment #9 from Kazumoto Kojima <kkojima at gcc dot gnu.org> ---
The testcase in #7 can be compiled successfully when -mindexed-addressing
is added.  It looks that base+index reg addressing mode is disabled
for shmedia32 and shcompact as default and it makes ira unhappy.
We used to return NO_REGS for INDEX_REG_CLASS when -mindexed-addressing
is disabled and it could suppress the use of reg+index addressing in
the older compilers.  It seems that now this isn't the right way to
disable that addressing.  With

--- /svn/trunk/gcc/config/sh/sh.h    2014-05-14 10:20:06.526008871 +0900
+++ gcc/config/sh/sh.h    2014-07-28 14:16:51.358771570 +0900
@@ -1723,8 +1723,7 @@ struct sh_args {
 #define INDEX_REGISTER_RTX_P(X) MAYBE_INDEX_REGISTER_RTX_P(X, false)
 #endif

-#define ALLOW_INDEXED_ADDRESS \
-  ((!TARGET_SHMEDIA32 && !TARGET_SHCOMPACT) || TARGET_ALLOW_INDEXED_ADDRESS)
+#define ALLOW_INDEXED_ADDRESS 1

 /* A C compound statement that attempts to replace X, which is an address
    that needs reloading, with a valid memory address for an operand of

my c-only sh64-elf build is completed without errors.  Although
I don't think the patch does the right thing, it'll prove that
ALLOW_INDEXED_ADDRESS causes problems.

Reply via email to