From d639b2ba7d4a93d790bde3ad55df751116eab04b Mon Sep 17 00:00:00 2001
From: Jozef Lawrynowicz <jozef.l@mittosystems.com>
Date: Mon, 22 Jul 2019 10:35:43 +0100
Subject: [PATCH] MSP430 additional register
gcc/ChangeLog:
2019-07-23 Jozef Lawrynowicz <jozef.l@mittosystems.com>
PR target/70320
* config/msp430/msp430.h: Define ADDITIONAL_REGISTER_NAMES.
gcc/testsuite/ChangeLog:
2019-07-23 Jozef Lawrynowicz <jozef.l@mittosystems.com>
PR target/70320
* gcc.target/msp430/asm-register-names-lower-case.c: New test.
* gcc.target/msp430/asm-register-names-upper-case.c: Likewise.
---
gcc/config/msp430/msp430.h | 22 ++++++++++++++++
.../msp430/asm-register-names-lower-case.c | 25 +++++++++++++++++++
.../msp430/asm-register-names-upper-case.c | 25 +++++++++++++++++++
3 files changed, 72 insertions(+)
create mode 100644 gcc/testsuite/gcc.target/msp430/asm-register-names-lower-case.c
create mode 100644 gcc/testsuite/gcc.target/msp430/asm-register-names-upper-case.c
@@ -224,6 +224,28 @@ extern const char * msp430_select_hwmult_lib (int, const char **);
"argptr" \
}
+/* Allow lowercase "r" to be used in register names instead of upper
+ case "R". */
+#define ADDITIONAL_REGISTER_NAMES \
+{ \
+ { "r0", 0 }, \
+ { "r1", 1 }, \
+ { "r2", 2 }, \
+ { "r3", 3 }, \
+ { "r4", 4 }, \
+ { "r5", 5 }, \
+ { "r6", 6 }, \
+ { "r7", 7 }, \
+ { "r8", 8 }, \
+ { "r9", 9 }, \
+ { "r10", 10 }, \
+ { "r11", 11 }, \
+ { "r12", 12 }, \
+ { "r13", 13 }, \
+ { "r14", 14 }, \
+ { "r15", 15 } \
+}
+
enum reg_class
{
NO_REGS,
new file mode 100644
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-options "-fdump-rtl-expand" } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R4" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R5" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R6" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R7" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R8" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R9" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R10" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R11" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R12" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R13" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R14" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R15" expand } } */
+
+/* PR target/70320
+ Check that a lower case "r" in register names is accepted in
+ an asm statement clobber list. */
+
+void
+foo (void)
+{
+ __asm__ ("" : : : "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12",
+ "r13", "r14", "r15");
+}
new file mode 100644
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-options "-fdump-rtl-expand" } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R4" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R5" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R6" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R7" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R8" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R9" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R10" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R11" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R12" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R13" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R14" expand } } */
+/* { dg-final { scan-rtl-dump "(?n)clobber.*R15" expand } } */
+
+/* PR target/70320
+ Check that a lower case "r" in register names is accepted in
+ an asm statement clobber list. */
+
+void
+foo (void)
+{
+ __asm__ ("" : : : "R4", "R5", "R6", "R7", "R8", "R9", "R10", "R11", "R12",
+ "R13", "R14", "R15");
+}
--
2.17.1