aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Li <sparse@chrisli.org>2009-07-10 11:19:22 -0700
committerChristopher Li <sparse@chrisli.org>2009-07-19 02:17:32 +0000
commit8cf99394ee4c08a3ede8ef52cd0b3ce73afcf076 (patch)
tree9b280f75bda93d150735509c86f98a68439b9837 /symbol.h
parentAdd validation for restrict and attribute warning (diff)
downloadsparse-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.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/symbol.h b/symbol.h
index 751dec1..42d69d6 100644
--- a/symbol.h
+++ b/symbol.h
@@ -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)