diff options
author | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2015-10-06 13:15:52 -0400 |
---|---|---|
committer | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2015-10-06 13:17:20 -0400 |
commit | ce72ad0ecdb43f6572c1febe8993d817f572f269 (patch) | |
tree | 11dac3426fd0a7a8f03576d9bed0d6f07ce95533 /lisc/rega.c | |
parent | a83174f44741088906718cc656675099e9193ad5 (diff) | |
download | roux-ce72ad0ecdb43f6572c1febe8993d817f572f269.tar.gz |
factor ins array edition in icpy
Diffstat (limited to 'lisc/rega.c')
-rw-r--r-- | lisc/rega.c | 20 |
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; } |