diff options
| author | Joe Soroka <gits@joesoroka.com> | 2011-07-08 00:55:34 -0700 |
|---|---|---|
| committer | Joe Soroka <gits@joesoroka.com> | 2011-07-08 00:55:34 -0700 |
| commit | d01f65ef935d4d9eb78d4b9442a7538346b1f0a9 (patch) | |
| tree | b2e84c9a162a9e8c966af7b447b40946daa1d3c6 | |
| parent | f8656fbc3c3f9830b2c96b0d900bf8740cb5201f (diff) | |
| download | tinycc-d01f65ef935d4d9eb78d4b9442a7538346b1f0a9.tar.gz tinycc-d01f65ef935d4d9eb78d4b9442a7538346b1f0a9.tar.bz2 | |
fix end-of-scope for self-referential macros
| -rw-r--r-- | tccpp.c | 2 | ||||
| -rw-r--r-- | tests/tcctest.c | 3 |
2 files changed, 3 insertions, 2 deletions
@@ -2689,6 +2689,8 @@ static int macro_subst_tok(TokenString *tok_str, ml->p = NULL; *can_read_stream = ml -> prev; } + /* also, end of scope for nested defined symbol */ + (*nested_list)->v = -1; goto redo; } } else { diff --git a/tests/tcctest.c b/tests/tcctest.c index 8d558e3..22f3fdb 100644 --- a/tests/tcctest.c +++ b/tests/tcctest.c @@ -290,13 +290,12 @@ static void print_num(char *fn, int line, int num) { void recursive_macro_test(void) { -#if 0 /* doesnt work yet */ + #define ELF32_ST_TYPE(val) ((val) & 0xf) #define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) #define STB_WEAK 2 /* Weak symbol */ #define ELFW(type) ELF##32##_##type printf("%d\n", ELFW(ST_INFO)(STB_WEAK, ELFW(ST_TYPE)(123))); -#endif #define WRAP(x) x |
