summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2009-09-24 16:40:36 -0400
committerDJ Delorie <dj@gcc.gnu.org>2009-09-24 16:40:36 -0400
commit18b802688624127aa26b3d75dd0ce41e06cbeee9 (patch)
tree34be4c7ed01776e2acc6a10a2efd50545d836eba
parent368908d82b2f308fd2d78c4ee286071f08efc902 (diff)
downloadgcc-18b802688624127aa26b3d75dd0ce41e06cbeee9.tar.gz
re PR target/41456 (unrecognized R constraint: R13)
PR target/41456 * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13. (reg_class): Likewise. (REG_CLASS_NAMES): Likewise. * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise. * config/m32c/m32c.c (m32c_override_options): Disable -fivopts for M32C. From-SVN: r152144
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/config/m32c/m32c.c5
-rw-r--r--gcc/config/m32c/m32c.h3
3 files changed, 19 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9fbcb517e32..3a8833d5a69 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2009-09-24 DJ Delorie <dj@redhat.com>
+
+ PR target/41456
+ * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
+ (reg_class): Likewise.
+ (REG_CLASS_NAMES): Likewise.
+ * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
+
+ * config/m32c/m32c.c (m32c_override_options): Disable -fivopts for
+ M32C.
+
2009-09-24 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/predicates.md (indexed_or_indirect_operand):
diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c
index a0689495aa0..4eeedb183e7 100644
--- a/gcc/config/m32c/m32c.c
+++ b/gcc/config/m32c/m32c.c
@@ -422,6 +422,9 @@ m32c_override_options (void)
}
else
target_memregs = 16;
+
+ if (TARGET_A24)
+ flag_ivopts = 0;
}
/* Defining data structures for per-function information */
@@ -638,6 +641,8 @@ m32c_reg_class_from_constraint (char c ATTRIBUTE_UNUSED, const char *s)
return R3_REGS;
if (memcmp (s, "R02", 3) == 0)
return R02_REGS;
+ if (memcmp (s, "R13", 3) == 0)
+ return R13_REGS;
if (memcmp (s, "R03", 3) == 0)
return R03_REGS;
if (memcmp (s, "Rdi", 3) == 0)
diff --git a/gcc/config/m32c/m32c.h b/gcc/config/m32c/m32c.h
index 48e669b3da4..0f12158c0e4 100644
--- a/gcc/config/m32c/m32c.h
+++ b/gcc/config/m32c/m32c.h
@@ -277,6 +277,7 @@ machine_function;
{ 0x00000002 }, /* R2 - r2 */\
{ 0x00000008 }, /* R3 - r3 */\
{ 0x00000003 }, /* R02 - r0r2 */\
+ { 0x0000000c }, /* R13 - r1r3 */\
{ 0x00000005 }, /* HL - r0 r1 */\
{ 0x00000005 }, /* QI - r0 r1 */\
{ 0x0000000a }, /* R23 - r2 r3 */\
@@ -316,6 +317,7 @@ enum reg_class
R2_REGS,
R3_REGS,
R02_REGS,
+ R13_REGS,
HL_REGS,
QI_REGS,
R23_REGS,
@@ -357,6 +359,7 @@ enum reg_class
"R2_REGS", \
"R3_REGS", \
"R02_REGS", \
+"R13_REGS", \
"HL_REGS", \
"QI_REGS", \
"R23_REGS", \