From 97e45d9e697f9599230a3ca085a276ddc9868038 Mon Sep 17 00:00:00 2001 From: "Theodore A. Roth" Date: Sun, 28 Nov 2004 23:15:59 +0000 Subject: [PATCH] avr.c (avr_handle_fndecl_attribute): Generate a warning if the function name does not begin with "__vector" and the... * config/avr/avr.c (avr_handle_fndecl_attribute): Generate a warning if the function name does not begin with "__vector" and the function has either the 'signal' or 'interrupt' attribute. From-SVN: r91433 --- gcc/ChangeLog | 6 ++++++ gcc/config/avr/avr.c | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4d4cad0d06c..591a97cad42 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-11-28 Theodore A. Roth + + * config/avr/avr.c (avr_handle_fndecl_attribute): Generate a + warning if the function name does not begin with "__vector" and the + function has either the 'signal' or 'interrupt' attribute. + 2004-11-28 Theodore A. Roth * config/avr/avr.c (avr_mcu_types): Add entries for atmega48, diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index a00e3b1ab2b..6ea3303cf7b 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -4545,6 +4545,32 @@ avr_handle_fndecl_attribute (tree *node, tree name, IDENTIFIER_POINTER (name)); *no_add_attrs = true; } + else + { + const char *func_name = IDENTIFIER_POINTER (DECL_NAME (*node)); + const char *attr = IDENTIFIER_POINTER (name); + + /* If the function has the 'signal' or 'interrupt' attribute, test to + make sure that the name of the function is "__vector_NN" so as to + catch when the user misspells the interrupt vector name. */ + + if (strncmp (attr, "interrupt", strlen ("interrupt")) == 0) + { + if (strncmp (func_name, "__vector", strlen ("__vector")) != 0) + { + warning ("`%s' appears to be a misspelled interrupt handler", + func_name); + } + } + else if (strncmp (attr, "signal", strlen ("signal")) == 0) + { + if (strncmp (func_name, "__vector", strlen ("__vector")) != 0) + { + warning ("`%s' appears to be a misspelled signal handler", + func_name); + } + } + } return NULL_TREE; } -- 2.30.2