From 146e6a63e715e0c3e08aacbcaa79ff8930289297 Mon Sep 17 00:00:00 2001 From: Luc Van Oostenryck Date: Sun, 17 May 2020 17:45:10 +0200 Subject: attribute: teach sparse about attribute((gnu_inline)) But for the moment do nothing special with it. Signed-off-by: Luc Van Oostenryck --- parse.c | 2 ++ show-parse.c | 1 + symbol.h | 8 ++++---- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/parse.c b/parse.c index 96e6fda5..9e7b74f9 100644 --- a/parse.c +++ b/parse.c @@ -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]"}, diff --git a/symbol.h b/symbol.h index 4bce78d5..7241f13d 100644 --- a/symbol.h +++ b/symbol.h @@ -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) -- cgit 1.2.3-korg