aboutsummaryrefslogtreecommitdiff
path: root/libtcc.c
diff options
context:
space:
mode:
authorDavid Mertens <dcmertens.perl@gmail.com>2016-11-22 16:33:12 -0500
committerDavid Mertens <dcmertens.perl@gmail.com>2016-11-28 09:01:12 -0500
commitd2e2f423820ca00c1f1d56fadd744a7e1d345955 (patch)
tree471d4ae451a52e315fb967e3c061df30a46552e6 /libtcc.c
parent3c68a8c6c04e1a527e2d80f2586cb2df96f862c6 (diff)
downloadtinycc-d2e2f423820ca00c1f1d56fadd744a7e1d345955.tar.gz
tinycc-d2e2f423820ca00c1f1d56fadd744a7e1d345955.tar.bz2
Implement gcc bitfield algorithm; add -mms-bitfields
Diffstat (limited to 'libtcc.c')
-rw-r--r--libtcc.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/libtcc.c b/libtcc.c
index f184502..b824c18 100644
--- a/libtcc.c
+++ b/libtcc.c
@@ -752,6 +752,7 @@ LIBTCCAPI TCCState *tcc_new(void)
s->alacarte_link = 1;
s->nocommon = 1;
s->warn_implicit_function_declaration = 1;
+ s->ms_bitfields = 0;
#ifdef CHAR_IS_UNSIGNED
s->char_is_unsigned = 1;
@@ -1508,6 +1509,7 @@ enum {
TCC_OPTION_Wl,
TCC_OPTION_W,
TCC_OPTION_O,
+ TCC_OPTION_mms_bitfields,
TCC_OPTION_m,
TCC_OPTION_f,
TCC_OPTION_isystem,
@@ -1571,6 +1573,7 @@ static const TCCOption tcc_options[] = {
{ "Wl,", TCC_OPTION_Wl, TCC_OPTION_HAS_ARG | TCC_OPTION_NOSEP },
{ "W", TCC_OPTION_W, TCC_OPTION_HAS_ARG | TCC_OPTION_NOSEP },
{ "O", TCC_OPTION_O, TCC_OPTION_HAS_ARG | TCC_OPTION_NOSEP },
+ { "mms-bitfields", TCC_OPTION_mms_bitfields, 0}, /* must go before option 'm' */
{ "m", TCC_OPTION_m, TCC_OPTION_HAS_ARG },
{ "f", TCC_OPTION_f, TCC_OPTION_HAS_ARG | TCC_OPTION_NOSEP },
{ "isystem", TCC_OPTION_isystem, TCC_OPTION_HAS_ARG },
@@ -1854,6 +1857,9 @@ PUB_FUNC int tcc_parse_args(TCCState *s, int argc, char **argv)
if (x > 0)
tcc_define_symbol(s, "__OPTIMIZE__", NULL);
break;
+ case TCC_OPTION_mms_bitfields:
+ s->ms_bitfields = 1;
+ break;
case TCC_OPTION_traditional:
case TCC_OPTION_pedantic:
case TCC_OPTION_pipe: