diff options
author | Christopher Li <sparse@chrisli.org> | 2009-07-10 11:19:22 -0700 |
---|---|---|
committer | Christopher Li <sparse@chrisli.org> | 2009-07-19 02:17:32 +0000 |
commit | 8cf99394ee4c08a3ede8ef52cd0b3ce73afcf076 (patch) | |
tree | 9b280f75bda93d150735509c86f98a68439b9837 /symbol.h | |
parent | Add validation for restrict and attribute warning (diff) | |
download | sparse-8cf99394ee4c08a3ede8ef52cd0b3ce73afcf076.tar.gz sparse-8cf99394ee4c08a3ede8ef52cd0b3ce73afcf076.tar.bz2 sparse-8cf99394ee4c08a3ede8ef52cd0b3ce73afcf076.zip |
move extern inline function to file scope
In gcc extern inline function has special meaning. The inline
function will never emit stand alone copy of the function. It also
allow multiple implementations cross different file. That effectively
makes the extern inline has file scope.
Signed-off-by: Christopher Li <sparse@chrisli.org>
Diffstat (limited to 'symbol.h')
-rw-r--r-- | symbol.h | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -340,6 +340,18 @@ static inline int is_void_type(struct symbol *type) return type == &void_ctype; } +static inline int is_function(struct symbol *type) +{ + return type && type->type == SYM_FN; +} + +static inline int is_extern_inline(struct symbol *sym) +{ + return (sym->ctype.modifiers & MOD_EXTERN) && + (sym->ctype.modifiers & MOD_INLINE) && + is_function(sym->ctype.base_type); +} + static inline int get_sym_type(struct symbol *type) { if (type->type == SYM_NODE) |