diff options
| author | Detlef Riekenberg <wine.dev@web.de> | 2010-01-26 22:56:22 +0100 |
|---|---|---|
| committer | Detlef Riekenberg <tcc.dev@web.de> | 2010-01-26 22:56:22 +0100 |
| commit | a975008ae795c71bd4620bc4b3c503f0617b58bb (patch) | |
| tree | 89d591f18b6779211a8e3f6275ebd05b5915801e /tccgen.c | |
| parent | 2650584ac4fd71ae4ed2b4e3da755b890ba0637c (diff) | |
| download | tinycc-a975008ae795c71bd4620bc4b3c503f0617b58bb.tar.gz tinycc-a975008ae795c71bd4620bc4b3c503f0617b58bb.tar.bz2 | |
Add support for the __mode__ attribute
--
By by ... Detlef
Diffstat (limited to 'tccgen.c')
| -rw-r--r-- | tccgen.c | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -2501,6 +2501,25 @@ static void parse_attribute(AttributeDef *ad) ad->func_call = FUNC_FASTCALLW; break; #endif + case TOK_MODE: + skip('('); + switch(tok) { + case TOK_MODE_DI: + ad->mode = VT_LLONG + 1; + break; + case TOK_MODE_HI: + ad->mode = VT_SHORT + 1; + break; + case TOK_MODE_SI: + ad->mode = VT_INT + 1; + break; + default: + warning("__mode__(%s) not supported\n", get_tok_str(tok, NULL)); + break; + } + next(); + skip(')'); + break; case TOK_DLLEXPORT: ad->func_export = 1; break; @@ -2874,6 +2893,10 @@ static int parse_btype(CType *type, AttributeDef *ad) case TOK_ATTRIBUTE1: case TOK_ATTRIBUTE2: parse_attribute(ad); + if (ATTR_MODE(ad)) { + u = ATTR_MODE(ad) -1; + t = (t & ~VT_BTYPE) | u; + } break; /* GNUC typeof */ case TOK_TYPEOF1: |
