From 252a151fc6b701b23745d1d076e10a6fa465ed84 Mon Sep 17 00:00:00 2001 From: seyko Date: Tue, 3 Mar 2015 14:31:47 +0300 Subject: [PATCH] pp-many-files: don't drop a preprocessor defines when tcc going to preprocess a next file in the same pass like tcc -E one.c two.c three.c -o combined.i This will allow to speed up a compilation process by using a commamd like tcc -E *.c | tcc -o program.exe -xc - It looks that multi-times initialization don't affect anything. Only call to the free_defines(define_start) in tcc_preprocess() is removed in assumption that free_defines(NULL) in tcc_cleanup() will free all defines. --- tccpp.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tccpp.c b/tccpp.c index 25d9ca93..4ecc6646 100644 --- a/tccpp.c +++ b/tccpp.c @@ -3203,14 +3203,11 @@ static void line_macro_output(BufferedFile *f, const char *s, TCCState *s1) /* Preprocess the current file */ ST_FUNC int tcc_preprocess(TCCState *s1) { - Sym *define_start; - BufferedFile *file_ref, **iptr, **iptr_new; int token_seen, d; const char *s; preprocess_init(s1); - define_start = define_stack; ch = file->buf_ptr[0]; tok_flags = TOK_FLAG_BOL | TOK_FLAG_BOF; parse_flags = PARSE_FLAG_ASM_COMMENTS | PARSE_FLAG_PREPROCESS | @@ -3258,6 +3255,5 @@ print_line: } fputs(get_tok_str(tok, &tokc), s1->ppfp); } - free_defines(define_start); return 0; } -- 2.11.4.GIT