diff options
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/config/m32c/m32c.c | 5 | ||||
-rw-r--r-- | gcc/config/m32c/m32c.h | 3 |
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", \ |