From 3ce7bc6efc8079dfa182840a177dbff8199ae1d5 Mon Sep 17 00:00:00 2001 From: Detlef Riekenberg Date: Sun, 10 Apr 2022 17:32:38 +0200 Subject: [PATCH] Accept option "-Os" and define "__OPTIMIZE_SIZE__" Some headers and source code change macros and implementation, when __OPTIMIZE_SIZE__ is defined. This does not change our generated code. Signed-off-by: Detlef Riekenberg --- libtcc.c | 6 +++++- tccpp.c | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/libtcc.c b/libtcc.c index 5fb793e0..f2839d2e 100644 --- a/libtcc.c +++ b/libtcc.c @@ -1997,7 +1997,11 @@ reparse: s->filetype = x | (s->filetype & ~AFF_TYPE_MASK); break; case TCC_OPTION_O: - s->optimize = atoi(optarg); + /* Use "-O" as alias for "-O1". */ + /* Other common used values: "-O0", "-O1", "-O2", "-O3" and "-Os" */ + /* no failure with unsupported options */ + x = *optarg; + s->optimize = isnum(x) ? atoi(optarg) : (x) ? x : 1; break; case TCC_OPTION_print_search_dirs: x = OPT_PRINT_DIRS; diff --git a/tccpp.c b/tccpp.c index 6b828c9d..2ff5d5e9 100644 --- a/tccpp.c +++ b/tccpp.c @@ -3733,6 +3733,8 @@ static void tcc_predefs(TCCState *s1, CString *cs, int is_asm) putdef(cs, "__CHAR_UNSIGNED__"); if (s1->optimize > 0) putdef(cs, "__OPTIMIZE__"); + if (s1->optimize == 's') + putdef(cs, "__OPTIMIZE_SIZE__"); if (s1->option_pthread) putdef(cs, "_REENTRANT"); if (s1->leading_underscore)