Added ftepp predefs flag (ability to turn on/off predefs) disabled by default (even with -ftepp), enabled with -E, to enable use -fftepp-predefs.

This commit is contained in:
Dale Weiler 2012-12-24 00:21:55 +00:00
parent bd12429cd0
commit 0a57c408c0
4 changed files with 17 additions and 12 deletions

16
ftepp.c
View file

@ -1391,14 +1391,16 @@ static bool ftepp_preprocess(ftepp_t *ftepp)
case TOKEN_IDENT:
case TOKEN_TYPENAME:
/* is it a predef? */
for (i = 0; i < sizeof(ftepp_predefs) / sizeof (*ftepp_predefs); i++) {
if (!strcmp(ftepp_predefs[i].name, ftepp_tokval(ftepp))) {
expand = ftepp_predefs[i].func(ftepp->lex);
ftepp_out(ftepp, expand, false);
ftepp_next(ftepp); /* skip */
if (OPTS_FLAG(FTEPP_PREDEFS)) {
for (i = 0; i < sizeof(ftepp_predefs) / sizeof (*ftepp_predefs); i++) {
if (!strcmp(ftepp_predefs[i].name, ftepp_tokval(ftepp))) {
expand = ftepp_predefs[i].func(ftepp->lex);
ftepp_out(ftepp, expand, false);
ftepp_next(ftepp); /* skip */
mem_d(expand); /* free memory */
break;
mem_d(expand); /* free memory */
break;
}
}
}

1
main.c
View file

@ -261,6 +261,7 @@ static bool options_parse(int argc, char **argv) {
case 'E':
opts.pp_only = true;
opts_set(opts.flags, FTEPP_PREDEFS, true); /* predefs on for -E */
break;
/* debug turns on -flno */

1
opts.c
View file

@ -57,6 +57,7 @@ static void opts_setdefault() {
/* flags */
opts_set(opts.flags, ADJUST_VECTOR_FIELDS, true);
opts_set(opts.flags, FTEPP, false);
opts_set(opts.flags, FTEPP_PREDEFS, false);
opts_set(opts.flags, CORRECT_TERNARY, true);
}

View file

@ -31,6 +31,7 @@
GMQCC_DEFINE_FLAG(DARKPLACES_STRING_TABLE_BUG)
GMQCC_DEFINE_FLAG(ADJUST_VECTOR_FIELDS)
GMQCC_DEFINE_FLAG(FTEPP)
GMQCC_DEFINE_FLAG(FTEPP_PREDEFS)
GMQCC_DEFINE_FLAG(RELAXED_SWITCH)
GMQCC_DEFINE_FLAG(SHORT_LOGIC)
GMQCC_DEFINE_FLAG(PERL_LOGIC)
@ -78,11 +79,11 @@
#endif
#ifdef GMQCC_TYPE_OPTIMIZATIONS
GMQCC_DEFINE_FLAG(PEEPHOLE, 1)
GMQCC_DEFINE_FLAG(LOCAL_TEMPS, 3)
GMQCC_DEFINE_FLAG(TAIL_RECURSION, 1)
GMQCC_DEFINE_FLAG(TAIL_CALLS, 2)
GMQCC_DEFINE_FLAG(OVERLAP_LOCALS, 3)
GMQCC_DEFINE_FLAG(PEEPHOLE, 1)
GMQCC_DEFINE_FLAG(LOCAL_TEMPS, 3)
GMQCC_DEFINE_FLAG(TAIL_RECURSION, 1)
GMQCC_DEFINE_FLAG(TAIL_CALLS, 2)
GMQCC_DEFINE_FLAG(OVERLAP_LOCALS, 3)
GMQCC_DEFINE_FLAG(STRIP_CONSTANT_NAMES, 1)
#endif