re PR target/57631 (Use assembler name for sanity checking of ISR names provided...
authorGeorg-Johann Lay <avr@gjlay.de>
Thu, 11 Jul 2013 08:41:13 +0000 (08:41 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Thu, 11 Jul 2013 08:41:13 +0000 (08:41 +0000)
gcc/
PR target/57631
* config/avr/avr.c (avr_set_current_function): Sanity-check signal
name seen by assembler/linker rather if available.

gcc/testsuite/
PR target/57631
* gcc.target/avr/torture/pr57631.c: New test.

From-SVN: r200901

gcc/ChangeLog
gcc/config/avr/avr.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/avr/torture/pr57631.c [new file with mode: 0644]

index 2f6c55a86fa302014945206131287d66af9b10f5..298fc1a4850c8a3ff932744932e723326015d497 100644 (file)
@@ -1,3 +1,9 @@
+2013-07-11  Georg-Johann Lay  <avr@gjlay.de>
+
+       PR target/57631
+       * config/avr/avr.c (avr_set_current_function): Sanity-check signal
+       name seen by assembler/linker rather if available.
+
 2013-07-11  Andreas Schwab  <schwab@suse.de>
 
        * config/aarch64/aarch64-linux.h (CPP_SPEC): Define.
index 8a602a413f8b3a025434af980cf626c80d59d357..f8a43e5715e04c9d9321c53098b48ea4806719a5 100644 (file)
@@ -584,7 +584,12 @@ avr_set_current_function (tree decl)
     {
       tree args = TYPE_ARG_TYPES (TREE_TYPE (decl));
       tree ret = TREE_TYPE (TREE_TYPE (decl));
-      const char *name = IDENTIFIER_POINTER (DECL_NAME (decl));
+      const char *name;
+
+      name = DECL_ASSEMBLER_NAME_SET_P (decl)
+        /* Remove the leading '*' added in set_user_assembler_name.  */
+        ? 1 + IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl))
+        : IDENTIFIER_POINTER (DECL_NAME (decl));
 
       /* Silently ignore 'signal' if 'interrupt' is present.  AVR-LibC startet
          using this when it switched from SIGNAL and INTERRUPT to ISR.  */
index d14d49cf154efcd07447735fbe4bdc9567a80f10..7d5558d20e589796fdf4a8ecec1a3937045c5a00 100644 (file)
@@ -1,3 +1,8 @@
+2013-07-11  Georg-Johann Lay  <avr@gjlay.de>
+
+       PR target/57631
+       * gcc.target/avr/torture/pr57631.c: New test.
+
 2013-07-10  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/57827
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr57631.c b/gcc/testsuite/gcc.target/avr/torture/pr57631.c
new file mode 100644 (file)
index 0000000..ecefbfc
--- /dev/null
@@ -0,0 +1,17 @@
+/* PR target/57631 */
+/* { dg-do compile } */
+
+void __attribute__((signal)) func1 (void) __asm ("__vector1");
+void func1  (void)
+{
+}
+
+void __attribute__((signal)) func2 (void)  __asm ("__vecto1");
+void func2  (void) /* { dg-warning "misspelled signal handler" } */
+{
+}
+
+void __attribute__((signal)) __vector_3 (void)  __asm ("__vecto1");
+void __vector_3 (void) /* { dg-warning "misspelled signal handler" } */
+{
+}