summary refs log tree commit diff
path: root/lisc/rega.c
diff options
context:
space:
mode:
authorQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2015-10-06 13:15:52 -0400
committerQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2015-10-06 13:17:20 -0400
commitce72ad0ecdb43f6572c1febe8993d817f572f269 (patch)
tree11dac3426fd0a7a8f03576d9bed0d6f07ce95533 /lisc/rega.c
parenta83174f44741088906718cc656675099e9193ad5 (diff)
downloadroux-ce72ad0ecdb43f6572c1febe8993d817f572f269.tar.gz
factor ins array edition in icpy
Diffstat (limited to 'lisc/rega.c')
-rw-r--r--lisc/rega.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/lisc/rega.c b/lisc/rega.c
index 2f335e6..cca3847 100644
--- a/lisc/rega.c
+++ b/lisc/rega.c
@@ -225,8 +225,8 @@ static Ins *
 dopm(Blk *b, Ins *i, RMap *m)
 {
 	RMap m0;
-	int n, r, r1, t, nins;
-	Ins *i1, *ib, *ip, *ir;
+	int n, r, r1, t;
+	Ins *i0, *i1, *ip, *ir;
 	ulong def;
 
 	m0 = *m;
@@ -263,16 +263,14 @@ dopm(Blk *b, Ins *i, RMap *m)
 #ifdef TEST_PMOV
 	return 0;
 #endif
-	nins = curi-insb;
-	ib = alloc((b->nins + nins - (i1-i)) * sizeof(Ins));
-	memcpy(ip = ib, b->ins, (i - b->ins) * sizeof(Ins));
-	ip += i - b->ins;
-	memcpy(ir = ip, insb, nins * sizeof(Ins));
-	ip += nins;
-	memcpy(ip, i1, (&b->ins[b->nins] - i1) * sizeof(Ins));
-	b->nins += nins - (i1-i);
+	n = b->nins - (i1 - i) + (curi - insb);
+	i0 = alloc(n * sizeof(Ins));
+	ip = icpy(ip = i0, b->ins, i - b->ins);
+	ip = icpy(ir = ip, insb, curi - insb);
+	ip = icpy(ip, i1, &b->ins[b->nins] - i1);
+	b->nins = n;
 	free(b->ins);
-	b->ins = ib;
+	b->ins = i0;
 	return ir;
 }