From d720865fb65d67acffb98d45eb7251d0102e2f9b Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Mon, 15 Aug 2016 05:19:12 +0200 Subject: Addresses of non-weak symbols are non-zero Use this fact in some foldings of comparisons. See testcase. --- tccgen.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'tccgen.c') diff --git a/tccgen.c b/tccgen.c index be5a8cb..27ea83f 100644 --- a/tccgen.c +++ b/tccgen.c @@ -4979,7 +4979,9 @@ static void expr_cond(void) expr_lor(); if (tok == '?') { next(); - if ((vtop->r & (VT_VALMASK | VT_LVAL | VT_SYM)) == VT_CONST) { + if ((vtop->r & (VT_VALMASK | VT_LVAL)) == VT_CONST && + (!(vtop->r & VT_SYM) || + !(vtop->sym->type.t & VT_WEAK))) { int saved_nocode_wanted = nocode_wanted; CType boolean; int c; -- cgit v1.3.1