aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--amd64/sysv.c2
-rw-r--r--arm64/abi.c2
-rw-r--r--rv64/abi.c2
-rw-r--r--util.c5
4 files changed, 7 insertions, 4 deletions
diff --git a/amd64/sysv.c b/amd64/sysv.c
index 5b559c1..ba4dc8e 100644
--- a/amd64/sysv.c
+++ b/amd64/sysv.c
@@ -670,7 +670,7 @@ amd64_sysv_abi(Fn *fn)
break;
fa = selpar(fn, b->ins, i);
n = b->nins - (i - b->ins) + (&insb[NIns] - curi);
- i0 = alloc(n * sizeof(Ins));
+ i0 = vnew(n, sizeof(Ins), PFn);
ip = icpy(ip = i0, curi, &insb[NIns] - curi);
ip = icpy(ip, i, &b->ins[b->nins] - i);
b->nins = n;
diff --git a/arm64/abi.c b/arm64/abi.c
index b9e6a14..fc23637 100644
--- a/arm64/abi.c
+++ b/arm64/abi.c
@@ -744,7 +744,7 @@ arm64_abi(Fn *fn)
break;
p = selpar(fn, b->ins, i);
n = b->nins - (i - b->ins) + (&insb[NIns] - curi);
- i0 = alloc(n * sizeof(Ins));
+ i0 = vnew(n, sizeof(Ins), PFn);
ip = icpy(ip = i0, curi, &insb[NIns] - curi);
ip = icpy(ip, i, &b->ins[b->nins] - i);
b->nins = n;
diff --git a/rv64/abi.c b/rv64/abi.c
index e31425c..20dc42c 100644
--- a/rv64/abi.c
+++ b/rv64/abi.c
@@ -601,7 +601,7 @@ rv64_abi(Fn *fn)
break;
p = selpar(fn, b->ins, i);
n = b->nins - (i - b->ins) + (&insb[NIns] - curi);
- i0 = alloc(n * sizeof(Ins));
+ i0 = vnew(n, sizeof(Ins), PFn);
ip = icpy(ip = i0, curi, &insb[NIns] - curi);
ip = icpy(ip, i, &b->ins[b->nins] - i);
b->nins = n;
diff --git a/util.c b/util.c
index 2e4b4cc..a2dfffa 100644
--- a/util.c
+++ b/util.c
@@ -255,7 +255,10 @@ emiti(Ins i)
void
idup(Ins **pd, Ins *s, ulong n)
{
- *pd = alloc(n * sizeof(Ins));
+ if (*pd)
+ vgrow(pd, n);
+ else
+ *pd = vnew(n, sizeof(Ins), PFn);
if (n)
memcpy(*pd, s, n * sizeof(Ins));
}