notaz.gp2x.de
/
ia32rtools.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
e627c4d
)
translate: more noreturn cases, neg flags
author
notaz
<notasas@gmail.com>
Thu, 17 Sep 2015 22:38:11 +0000
(
01:38
+0300)
committer
notaz
<notasas@gmail.com>
Thu, 17 Sep 2015 22:38:11 +0000
(
01:38
+0300)
tools/translate.c
patch
|
blob
|
blame
|
history
diff --git
a/tools/translate.c
b/tools/translate.c
index
de2da47
..
e8b1ba9
100644
(file)
--- a/
tools/translate.c
+++ b/
tools/translate.c
@@
-2583,10
+2583,10
@@
static int scan_for_pop(int i, int opcnt, int magic, int reg,
if (po->pp != NULL && po->pp->is_noreturn)
seen_noreturn = 1;
else
if (po->pp != NULL && po->pp->is_noreturn)
seen_noreturn = 1;
else
-
return -1
;
+
goto out
;
}
else
}
else
- return -1; // deadend
+ goto out;
}
if (po->flags & (OPF_RMD|OPF_DONE|OPF_FARG))
}
if (po->flags & (OPF_RMD|OPF_DONE|OPF_FARG))
@@
-2637,6
+2637,7
@@
static int scan_for_pop(int i, int opcnt, int magic, int reg,
}
}
}
}
+out:
// for noreturn, assume msvc skipped stack cleanup
return seen_noreturn ? 1 : -1;
}
// for noreturn, assume msvc skipped stack cleanup
return seen_noreturn ? 1 : -1;
}
@@
-6704,10
+6705,11
@@
static void gen_func(FILE *fout, FILE *fhdr, const char *funcn, int opcnt)
lmod_cast_s(po, po->operand[0].lmod), buf2);
last_arith_dst = &po->operand[0];
delayed_flag_op = NULL;
lmod_cast_s(po, po->operand[0].lmod), buf2);
last_arith_dst = &po->operand[0];
delayed_flag_op = NULL;
- if (pfomask &
(1 << PFO_C)
) {
+ if (pfomask &
PFOB_C
) {
fprintf(fout, "\n cond_c = (%s != 0);", buf1);
fprintf(fout, "\n cond_c = (%s != 0);", buf1);
- pfomask &= ~
(1 << PFO_C)
;
+ pfomask &= ~
PFOB_C
;
}
}
+ output_std_flags(fout, po, &pfomask, buf1);
break;
case OP_IMUL:
break;
case OP_IMUL: