From 2437ccdc768b1a4fde3255b2090e180b74ab198f Mon Sep 17 00:00:00 2001 From: seyko Date: Tue, 3 Mar 2015 15:51:09 +0300 Subject: A partial reverse for commit eda2c756edc4dca004ba217d5bf361235dd9de1f Author: Thomas Preud'homme Date: Tue Dec 31 23:51:20 2013 +0800 Move logic for if (int value) to tccgen.c Move the logic to do a test of an integer value (ex if (0)) out of arch-specific code to tccgen.c to avoid code duplication. This also fixes test of long long value which was only testing the bottom half of such values on 32 bits architectures. I don't understand why if () in gtst(i) was removed. This patch allows to compile a linux kernel v.2.4.26 W/o this patch a tcc simply crashes. --- i386-gen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'i386-gen.c') diff --git a/i386-gen.c b/i386-gen.c index ece054b..eca4ddd 100644 --- a/i386-gen.c +++ b/i386-gen.c @@ -677,7 +677,7 @@ ST_FUNC int gtst(int inv, int t) /* fast case : can jump directly since flags are set */ g(0x0f); t = psym((vtop->c.i - 16) ^ inv, t); - } else { /* VT_JMP || VT_JMPI */ + } else if (v == VT_JMP || v == VT_JMPI) { /* && or || optimization */ if ((v & 1) == inv) { /* insert vtop->c jump list in t */ -- cgit v1.3.1