mirror of
https://github.com/mirror/tinycc.git
synced 2024-12-28 04:00:06 +08:00
A partial reverse for commit eda2c756ed
Author: Thomas Preud'homme <robotux@celest.fr> 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.
This commit is contained in:
parent
c45a8695eb
commit
2437ccdc76
@ -1418,7 +1418,7 @@ int gtst(int inv, int t)
|
||||
op|=encbranch(r,t,1);
|
||||
o(op);
|
||||
t=r;
|
||||
} else { /* VT_JMP || VT_JMPI */
|
||||
} else if (v == VT_JMP || v == VT_JMPI) {
|
||||
if ((v & 1) == inv) {
|
||||
if(!vtop->c.i)
|
||||
vtop->c.i=t;
|
||||
|
@ -2102,7 +2102,7 @@ int gtst(int inv, int t)
|
||||
C67_NOP(5);
|
||||
t = ind1; //return where we need to patch
|
||||
|
||||
} 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 */
|
||||
|
@ -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 */
|
||||
|
2
il-gen.c
2
il-gen.c
@ -516,7 +516,7 @@ int gtst(int inv, int t)
|
||||
break;
|
||||
}
|
||||
t = out_opj(c, 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 */
|
||||
|
@ -1592,7 +1592,7 @@ int gtst(int inv, int t)
|
||||
}
|
||||
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 */
|
||||
|
Loading…
Reference in New Issue
Block a user