mark apple targets with a boolean

It is more natural to branch on a
flag than have different function
pointers for high-level passes.
This commit is contained in:
Quentin Carbonneaux 2022-10-03 11:08:05 +02:00
parent a7e1602252
commit b03a8970d7
8 changed files with 41 additions and 86 deletions

View file

@ -67,5 +67,4 @@ void amd64_sysv_abi(Fn *);
void amd64_isel(Fn *);
/* emit.c */
void amd64_sysv_emitfn(Fn *, FILE *);
void amd64_apple_emitfn(Fn *, FILE *);
void amd64_emitfn(Fn *, FILE *);

View file

@ -538,8 +538,8 @@ framesz(Fn *fn)
return 4*f + 8*o + 176*fn->vararg;
}
static void
emitfn(Fn *fn, FILE *f)
void
amd64_emitfn(Fn *fn, FILE *f)
{
static char *ctoa[] = {
#define X(c, s) [c] = s,
@ -620,17 +620,6 @@ emitfn(Fn *fn, FILE *f)
}
}
id0 += fn->nblk;
}
void
amd64_sysv_emitfn(Fn *fn, FILE *f)
{
emitfn(fn, f);
elf_emitfnfin(fn->name, f);
}
void
amd64_apple_emitfn(Fn *fn, FILE *f)
{
emitfn(fn, f);
if (!T.apple)
elf_emitfnfin(fn->name, f);
}

View file

@ -27,10 +27,10 @@ amd64_memargs(int op)
.abi0 = elimsb, \
.abi1 = amd64_sysv_abi, \
.isel = amd64_isel, \
.emitfn = amd64_emitfn, \
Target T_amd64_sysv = {
.name = "amd64_sysv",
.emitfn = amd64_sysv_emitfn,
.emitfin = elf_emitfin,
.asloc = ".L",
AMD64_COMMON
@ -38,7 +38,7 @@ Target T_amd64_sysv = {
Target T_amd64_apple = {
.name = "amd64_apple",
.emitfn = amd64_apple_emitfn,
.apple = 1,
.emitfin = macho_emitfin,
.asloc = "L",
.assym = "_",