aboutsummaryrefslogtreecommitdiffhomepage
path: root/amd64
diff options
context:
space:
mode:
Diffstat (limited to 'amd64')
-rw-r--r--amd64/emit.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/amd64/emit.c b/amd64/emit.c
index f872b49..ae3f45d 100644
--- a/amd64/emit.c
+++ b/amd64/emit.c
@@ -42,17 +42,16 @@ ref2oper(union ref r)
enum { NOBASE = 99, NOINDEX = 99 };
-static struct oper
-addmemoper(struct oper mem, struct oper add)
+static void
+addmemoper(struct oper *mem, struct oper add)
{
- assert(mem.t == OMEM);
+ assert(mem->t == OMEM);
if (add.t == OIMM) {
- mem.disp += add.imm;
+ mem->disp += add.imm;
} else if (add.t == OREG) {
- assert(mem.index == NOINDEX);
- mem.index = add.reg;
+ assert(mem->index == NOINDEX);
+ mem->index = add.reg;
}
- return mem;
}
enum operpat {
@@ -383,10 +382,10 @@ mkmemoper(union ref r)
struct oper mem;
if (addr->base.t == RTMP && ioper[addr->base.i].t == OMEM) {
mem = ioper[addr->base.i];
- if (addr->index.t) addmemoper(mem, mkregoper(addr->index));
+ if (addr->index.t) addmemoper(&mem, mkregoper(addr->index));
assert(!mem.shift);
mem.shift = addr->shift;
- addmemoper(mem, mkoper(OIMM, .imm = addr->disp));
+ addmemoper(&mem, mkoper(OIMM, .imm = addr->disp));
return mem;
}
return mkoper(OMEM, .base = addr->base.t ? mkregoper(addr->base).reg : NOBASE,