notaz.gp2x.de
/
ia32rtools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
translate: don't overpromote to fastcall
[ia32rtools.git]
/
tools
/
translate.c
diff --git
a/tools/translate.c
b/tools/translate.c
index
543d7b0
..
8ebda82
100644
(file)
--- a/
tools/translate.c
+++ b/
tools/translate.c
@@
-8404,15
+8404,9
@@
static void gen_hdr(const char *funcn, int opcnt)
}
// pass4:
}
// pass4:
- // - remove dead labels
// - handle push <const>/pop pairs
for (i = 0; i < opcnt; i++)
{
// - handle push <const>/pop pairs
for (i = 0; i < opcnt; i++)
{
- if (g_labels[i] != NULL && g_label_refs[i].i == -1) {
- free(g_labels[i]);
- g_labels[i] = NULL;
- }
-
po = &ops[i];
if (po->flags & (OPF_RMD|OPF_DONE))
continue;
po = &ops[i];
if (po->flags & (OPF_RMD|OPF_DONE))
continue;
@@
-8640,8
+8634,9
@@
static void output_hdr_fp(FILE *fout, const struct func_prototype *fp,
argc_normal++;
regmask_dep = 0;
}
argc_normal++;
regmask_dep = 0;
}
- else if (regmask_dep && (fp->is_stdcall || fp->argc_stack == 0)
- && (regmask_dep & ~(mxCX | mxDX)) == 0)
+ else if ((regmask_dep == (mxCX | mxDX)
+ && (fp->is_stdcall || fp->argc_stack == 0))
+ || (regmask_dep == mxCX && fp->argc_stack == 0))
{
fprintf(fout, " __fastcall ");
if (!(regmask_dep & (1 << xDX)) && fp->argc_stack == 0)
{
fprintf(fout, " __fastcall ");
if (!(regmask_dep & (1 << xDX)) && fp->argc_stack == 0)