From: Theodore A. Roth Date: Sun, 28 Nov 2004 23:15:59 +0000 (+0000) Subject: avr.c (avr_handle_fndecl_attribute): Generate a warning if the function name does... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=97e45d9e697f9599230a3ca085a276ddc9868038;p=gcc.git 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 --- 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; }