Commit Diff


commit - 9eda38e51f278aeceefd73bea6835eb929c00328
commit + 98bfdd28674d3c75aa349fd36eb55d238ce6bb30
blob - 596c681629a1fc841a290bb9b6c0be1f28d939b2
blob + 8ba9481f8ecd49f827a997ce6e10fef921b1bd0f
--- src/libmach/loc.c
+++ src/libmach/loc.c
@@ -187,11 +187,14 @@ lput8(Map *map, Regs *regs, Loc loc, u64int u)
 	return -1;
 }
 
+static Loc zl;
+
 Loc
 locaddr(ulong addr)
 {
 	Loc l;
 
+	l = zl;
 	l.type = LADDR;
 	l.addr = addr;
 	return l;
@@ -202,6 +205,7 @@ locindir(char *reg, long offset)
 {
 	Loc l;
 
+	l = zl;
 	l.type = LOFFSET;
 	l.reg = reg;
 	l.offset = offset;
@@ -214,6 +218,7 @@ locconst(ulong con)
 {
 	Loc l;
 
+	l = zl;
 	l.type = LCONST;
 	l.addr = con;
 	return l;
@@ -224,6 +229,7 @@ locnone(void)
 {
 	Loc l;
 
+	l = zl;
 	l.type = LNONE;
 	return l;
 }
@@ -233,6 +239,7 @@ locreg(char *reg)
 {
 	Loc l;
 
+	l = zl;
 	l.type = LREG;
 	l.reg = reg;
 	return l;