diff options
| author | 2025-12-18 08:50:47 +0100 | |
|---|---|---|
| committer | 2025-12-18 08:50:47 +0100 | |
| commit | d43993dfaa1cf9b684583a0c9266e18ea61abb4d (patch) | |
| tree | 4472cf1bfe63fbce17815fea4da1cb9c818288a9 /x86_64/emit.c | |
| parent | bfc03147a0cdac72250819443b529b379572471c (diff) | |
x86_64: for vararg calls, write to EAX in isel
Also, in regalloc ensure fixed intervals are sorted
Diffstat (limited to 'x86_64/emit.c')
| -rw-r--r-- | x86_64/emit.c | 10 |
1 files changed, 0 insertions, 10 deletions
diff --git a/x86_64/emit.c b/x86_64/emit.c index 13121b3..89585b8 100644 --- a/x86_64/emit.c +++ b/x86_64/emit.c @@ -1171,16 +1171,6 @@ emitinstr(uchar **pcode, struct function *fn, struct block *blk, int curi, struc Xpop(pcode, mkregoper(ins->l).reg); break; case Ocall: - if (calltab.p[ins->r.i].vararg >= 0) { - struct call *call = &calltab.p[ins->r.i]; - /* variadic functions need the caller to write num of args in sse regs to %al */ - int n = 0; - for (int i = 0; i < call->narg; ++i) - if (!call->abiarg[i].isstk && call->abiarg[i].reg >= XMM0) - ++n; - if (!n) DS("\x31\xC0"); /* XOR EAX, EAX */ - else B(0xB0), B(n); /* MOV AL, n */ - } Xcall(pcode, KPTR, ref2oper(ins->l)); break; case Oxvaprologue: |