diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2017-04-03 14:48:45 +0200 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2017-11-08 21:21:50 +0100 |
| commit | 1d7a1daf87bffe32b35c2aaf6bf6c6ce8928b417 (patch) | |
| tree | 02988923973ad1a00866c2a6fa53bcf48f6b4b94 | |
| parent | 6ff8886e898d5fa064515845ceabd36a5e4e8fa3 (diff) | |
| download | sparse-dev-1d7a1daf87bffe32b35c2aaf6bf6c6ce8928b417.tar.gz | |
MOD_ACCESSED is not a type modifier ...
but is used to track which inline functions are
effectively used. So better remove it from the MOD_...
and implement the same functionality via a flag
in struct symbol.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
| -rw-r--r-- | gdbhelpers | 3 | ||||
| -rw-r--r-- | parse.c | 2 | ||||
| -rw-r--r-- | show-parse.c | 1 | ||||
| -rw-r--r-- | symbol.c | 4 | ||||
| -rw-r--r-- | symbol.h | 4 |
5 files changed, 5 insertions, 9 deletions
@@ -140,9 +140,6 @@ define gdb_show_ctype if ($arg0->modifiers & MOD_NODEREF) printf "MOD_NODEREF " end - if ($arg0->modifiers & MOD_ACCESSED) - printf "MOD_ACCESSED " - end if ($arg0->modifiers & MOD_TOPLEVEL) printf "MOD_TOPLEVEL " end @@ -2184,7 +2184,7 @@ static struct statement *start_function(struct symbol *sym) start_function_scope(); ret = alloc_symbol(sym->pos, SYM_NODE); ret->ctype = sym->ctype.base_type->ctype; - ret->ctype.modifiers &= ~(MOD_STORAGE | MOD_CONST | MOD_VOLATILE | MOD_TLS | MOD_INLINE | MOD_ADDRESSABLE | MOD_NOCAST | MOD_NODEREF | MOD_ACCESSED | MOD_TOPLEVEL); + ret->ctype.modifiers &= ~(MOD_STORAGE | MOD_CONST | MOD_VOLATILE | MOD_TLS | MOD_INLINE | MOD_ADDRESSABLE | MOD_NOCAST | MOD_NODEREF | MOD_TOPLEVEL); ret->ctype.modifiers |= (MOD_AUTO | MOD_REGISTER); bind_symbol(ret, &return_ident, NS_ITERATOR); stmt->ret = ret; diff --git a/show-parse.c b/show-parse.c index 2adeae96..3364aec5 100644 --- a/show-parse.c +++ b/show-parse.c @@ -137,7 +137,6 @@ const char *modifier_string(unsigned long mod) {MOD_ADDRESSABLE, "[addressable]"}, {MOD_NOCAST, "[nocast]"}, {MOD_NODEREF, "[noderef]"}, - {MOD_ACCESSED, "[accessed]"}, {MOD_TOPLEVEL, "[toplevel]"}, {MOD_ASSIGNED, "[assigned]"}, {MOD_TYPE, "[type]"}, @@ -48,9 +48,9 @@ struct symbol_list *translation_unit_used_list = NULL; void access_symbol(struct symbol *sym) { if (sym->ctype.modifiers & MOD_INLINE) { - if (!(sym->ctype.modifiers & MOD_ACCESSED)) { + if (!sym->accessed) { add_symbol(&translation_unit_used_list, sym); - sym->ctype.modifiers |= MOD_ACCESSED; + sym->accessed = 1; } } } @@ -173,6 +173,7 @@ struct symbol { string:1, designated_init:1, forced_arg:1, + accessed:1, transparent_union:1; struct expression *array_size; struct ctype ctype; @@ -222,7 +223,6 @@ struct symbol { #define MOD_NOCAST 0x100000 #define MOD_NODEREF 0x200000 -#define MOD_ACCESSED 0x400000 #define MOD_TOPLEVEL 0x800000 // scoping.. #define MOD_ASSIGNED 0x2000000 @@ -242,7 +242,7 @@ struct symbol { #define MOD_SPECIFIER (MOD_CHAR | MOD_SHORT | MOD_LONG_ALL | MOD_SIGNEDNESS) #define MOD_SIZE (MOD_CHAR | MOD_SHORT | MOD_LONG_ALL) #define MOD_IGNORE (MOD_TOPLEVEL | MOD_STORAGE | MOD_ADDRESSABLE | \ - MOD_ASSIGNED | MOD_USERTYPE | MOD_ACCESSED | MOD_EXPLICITLY_SIGNED) + MOD_ASSIGNED | MOD_USERTYPE | MOD_EXPLICITLY_SIGNED) #define MOD_PTRINHERIT (MOD_VOLATILE | MOD_CONST | MOD_NODEREF | MOD_NORETURN | MOD_NOCAST) /* modifiers preserved by typeof() operator */ #define MOD_TYPEOF (MOD_VOLATILE | MOD_CONST | MOD_NOCAST | MOD_SPECIFIER) |
