diff options
author | Theodore A. Roth <troth@openavr.org> | 2004-11-28 23:15:59 +0000 |
---|---|---|
committer | Marek Michalkiewicz <marekm@gcc.gnu.org> | 2004-11-28 23:15:59 +0000 |
commit | 97e45d9e697f9599230a3ca085a276ddc9868038 (patch) | |
tree | feb1f0e90b043949cc205fc5048072449cc143c6 /gcc | |
parent | 359202256307dc7fe82327cf47b0964bbab5e604 (diff) | |
download | gcc-97e45d9e697f9599230a3ca085a276ddc9868038.zip gcc-97e45d9e697f9599230a3ca085a276ddc9868038.tar.gz gcc-97e45d9e697f9599230a3ca085a276ddc9868038.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/avr/avr.c | 26 |
2 files changed, 32 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4d4cad0..591a97c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2004-11-28 Theodore A. Roth <troth@openavr.org> + * 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 <troth@openavr.org> + * config/avr/avr.c (avr_mcu_types): Add entries for atmega48, atmega88, atmega168, attiny13, attiny2313, at90can128, atmega165, atmega325, atmega3250, atmega645 and atmega6450. diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index a00e3b1..6ea3303 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; } |