diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2017-01-05 04:22:18 +0100 |
|---|---|---|
| committer | Christopher Li <sparse@chrisli.org> | 2017-02-13 09:34:45 +0800 |
| commit | cb172dce6555c0b1eb1771a374018721ddf8b8a5 (patch) | |
| tree | d34a739be5ffbe00c8dcea424c097920f3b4e058 | |
| parent | 8c8c6f82ff625a97f26c14f230518fc32ad4c0c7 (diff) | |
| download | sparse-dev-cb172dce6555c0b1eb1771a374018721ddf8b8a5.tar.gz | |
C11: teach sparse about '_Alignof()'
This is a new name for GCC's '__alignof()' operator which was
already supported.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Signed-off-by: Christopher Li <sparse@chrisli.org>
| -rw-r--r-- | expression.c | 1 | ||||
| -rw-r--r-- | ident-list.h | 1 | ||||
| -rw-r--r-- | validation/c11-alignof.c | 12 |
3 files changed, 14 insertions, 0 deletions
diff --git a/expression.c b/expression.c index 7293d472..638639df 100644 --- a/expression.c +++ b/expression.c @@ -617,6 +617,7 @@ static struct token *unary_expression(struct token *token, struct expression **t { &sizeof_ident, EXPR_SIZEOF }, { &__alignof___ident, EXPR_ALIGNOF }, { &__alignof_ident, EXPR_ALIGNOF }, + { &_Alignof_ident, EXPR_ALIGNOF }, { &__sizeof_ptr___ident, EXPR_PTRSIZEOF }, }; int i; diff --git a/ident-list.h b/ident-list.h index b65b667d..8cc66a50 100644 --- a/ident-list.h +++ b/ident-list.h @@ -31,6 +31,7 @@ IDENT(L); /* Extended gcc identifiers */ IDENT(asm); IDENT_RESERVED(__asm); IDENT_RESERVED(__asm__); IDENT(alignof); IDENT_RESERVED(__alignof); IDENT_RESERVED(__alignof__); +IDENT_RESERVED(_Alignof); IDENT_RESERVED(__sizeof_ptr__); IDENT_RESERVED(__builtin_types_compatible_p); IDENT_RESERVED(__builtin_offsetof); diff --git a/validation/c11-alignof.c b/validation/c11-alignof.c new file mode 100644 index 00000000..238ef994 --- /dev/null +++ b/validation/c11-alignof.c @@ -0,0 +1,12 @@ +static int foo(void) +{ + return _Alignof(short); +} + +/* + * check-name: c11-alignof + * check-command: test-linearize -std=c11 $file + * + * check-output-ignore + * check-output-contains: ret\\.32 *\$2 + */ |
