From d9b7f018ce08bdd6b0e35608dbe75ba933622d92 Mon Sep 17 00:00:00 2001 From: grischka Date: Sun, 16 Oct 2016 19:04:40 +0200 Subject: i386: do not 'lexpand' into registers necessarily Previously, long longs were 'lexpand'ed into two registers always. Now, it expands - constants into two constants (lo-part, hi-part) - variables into two lvalues with offset+4 for the hi-part. This makes long long operations look a bit nicer. Also: don't apply i386 'inc/dec' optimization if carry generation is wanted. --- i386-gen.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'i386-gen.c') diff --git a/i386-gen.c b/i386-gen.c index b96e4fb..9cc2f8e 100644 --- a/i386-gen.c +++ b/i386-gen.c @@ -754,9 +754,9 @@ ST_FUNC void gen_opi(int op) c = vtop->c.i; if (c == (char)c) { /* generate inc and dec for smaller code */ - if (c==1 && opc==0) { + if (c==1 && opc==0 && op != TOK_ADDC1) { o (0x40 | r); // inc - } else if (c==1 && opc==5) { + } else if (c==1 && opc==5 && op != TOK_SUBC1) { o (0x48 | r); // dec } else { o(0x83); -- cgit v1.3.1