From 69a137ff889f552b3ce58b861f3f0601c1818d6b Mon Sep 17 00:00:00 2001 From: grischka Date: Fri, 14 Jul 2017 19:26:01 +0200 Subject: #pragma comment(option,"-..."), bitfields test, etc... tccpp.c: * #pragma comment(option,"-some-option") to set commandline option from C code. May work only for some options. libtcc.c: * option "-d1..9": sets a 'g_debug' global variable. (for development) tests2/Makefile: * new make targets: tests2.37 / tests2.37+ run single test from tests2, optionally update .expect * new variable GEN-ALWAYS to always generate certain .expects * bitfields test tccgen.c: * bitfields: fix a bug and improve slightly more * _Generic: ignore "type match twice" --- tccpp.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'tccpp.c') diff --git a/tccpp.c b/tccpp.c index 9ac98a6..0e46510 100644 --- a/tccpp.c +++ b/tccpp.c @@ -1658,24 +1658,28 @@ static void pragma_parse(TCCState *s1) goto pragma_err; } else if (tok == TOK_comment) { - char *file; + char *p; int t; next(); skip('('); - if (tok != TOK_lib) - goto pragma_warn; + t = tok; next(); skip(','); if (tok != TOK_STR) goto pragma_err; - file = tcc_strdup((char *)tokc.str.data); - dynarray_add(&s1->pragma_libs, &s1->nb_pragma_libs, file); + p = tcc_strdup((char *)tokc.str.data); next(); if (tok != ')') goto pragma_err; - } else { -pragma_warn: - if (s1->warn_unsupported) - tcc_warning("#pragma %s is ignored", get_tok_str(tok, &tokc)); + if (t == TOK_lib) { + dynarray_add(&s1->pragma_libs, &s1->nb_pragma_libs, p); + } else { + if (t == TOK_option) + tcc_set_options(s1, p); + tcc_free(p); + } + + } else if (s1->warn_unsupported) { + tcc_warning("#pragma %s is ignored", get_tok_str(tok, &tokc)); } return; -- cgit v1.3.1