diff options
author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-05-17 17:45:10 +0200 |
---|---|---|
committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-05-17 23:24:09 +0200 |
commit | 146e6a63e715e0c3e08aacbcaa79ff8930289297 (patch) | |
tree | 6a2a2fde3589690bd758425527ea945d735cdaa5 | |
parent | f3bb11fc7cc4a806b46681df4bdbd21ae39faf18 (diff) | |
download | sparse-146e6a63e715e0c3e08aacbcaa79ff8930289297.tar.gz |
attribute: teach sparse about attribute((gnu_inline))
But for the moment do nothing special with it.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r-- | parse.c | 2 | ||||
-rw-r--r-- | show-parse.c | 1 | ||||
-rw-r--r-- | symbol.h | 8 |
3 files changed, 7 insertions, 4 deletions
@@ -590,6 +590,8 @@ static struct init_keyword { {"const", NS_KEYWORD, MOD_PURE, .op = &attr_fun_op }, {"__const", NS_KEYWORD, MOD_PURE, .op = &attr_fun_op }, {"__const__", NS_KEYWORD, MOD_PURE, .op = &attr_fun_op }, + {"gnu_inline", NS_KEYWORD, MOD_GNU_INLINE, .op = &attr_fun_op }, + {"__gnu_inline__",NS_KEYWORD, MOD_GNU_INLINE, .op = &attr_fun_op }, {"externally_visible", NS_KEYWORD, .op = &ext_visible_op }, {"__externally_visible__", NS_KEYWORD, .op = &ext_visible_op }, diff --git a/show-parse.c b/show-parse.c index f4c7de30..eb71b650 100644 --- a/show-parse.c +++ b/show-parse.c @@ -131,6 +131,7 @@ const char *modifier_string(unsigned long mod) {MOD_ATOMIC, "[atomic]"}, {MOD_BITWISE, "[bitwise]"}, {MOD_EXPLICITLY_SIGNED, "[explicitly-signed]"}, + {MOD_GNU_INLINE, "[gnu_inline]"}, {MOD_NOCAST, "[nocast]"}, {MOD_NODEREF, "[noderef]"}, {MOD_NORETURN, "[noreturn]"}, @@ -229,7 +229,7 @@ struct symbol { #define MOD_UNSIGNED 0x00004000 #define MOD_EXPLICITLY_SIGNED 0x00008000 - // MOD UNUSED 0x00010000 +#define MOD_GNU_INLINE 0x00010000 #define MOD_USERTYPE 0x00020000 // MOD UNUSED 0x00040000 // MOD UNUSED 0x00080000 @@ -252,7 +252,7 @@ struct symbol { #define MOD_ESIGNED (MOD_SIGNED | MOD_EXPLICITLY_SIGNED) #define MOD_SIGNEDNESS (MOD_SIGNED | MOD_UNSIGNED | MOD_EXPLICITLY_SIGNED) #define MOD_SPECIFIER MOD_SIGNEDNESS -#define MOD_IGNORE (MOD_STORAGE | MOD_ACCESS | MOD_USERTYPE | MOD_EXPLICITLY_SIGNED | MOD_EXT_VISIBLE | MOD_UNUSED) +#define MOD_IGNORE (MOD_STORAGE | MOD_ACCESS | MOD_USERTYPE | MOD_EXPLICITLY_SIGNED | MOD_EXT_VISIBLE | MOD_UNUSED | MOD_GNU_INLINE) #define MOD_QUALIFIER (MOD_CONST | MOD_VOLATILE | MOD_RESTRICT) #define MOD_PTRINHERIT (MOD_QUALIFIER | MOD_ATOMIC | MOD_NODEREF | MOD_NORETURN | MOD_NOCAST) /* modifiers preserved by typeof() operator */ @@ -262,9 +262,9 @@ struct symbol { /* like cvr-qualifiers but 'reversed' (OK: source <= target) */ #define MOD_REV_QUAL (MOD_PURE|MOD_NORETURN) /* do not warn when these are duplicated */ -#define MOD_DUP_OK (MOD_UNUSED) +#define MOD_DUP_OK (MOD_UNUSED|MOD_GNU_INLINE) /* must be part of the declared symbol, not its type */ -#define MOD_DECLARE (MOD_STORAGE|MOD_UNUSED|MOD_PURE|MOD_NORETURN|MOD_EXT_VISIBLE) +#define MOD_DECLARE (MOD_STORAGE|MOD_GNU_INLINE|MOD_UNUSED|MOD_PURE|MOD_NORETURN|MOD_EXT_VISIBLE) |