diff options
author | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2015-10-05 21:27:02 -0400 |
---|---|---|
committer | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2015-10-05 21:38:55 -0400 |
commit | a83174f44741088906718cc656675099e9193ad5 (patch) | |
tree | e006679c5d7cc42692abe48a61b8776fd54067c0 /lisc/isel.c | |
parent | 60aacea0c3dad234b59dcfeb5d50e3de69662515 (diff) | |
download | roux-a83174f44741088906718cc656675099e9193ad5.tar.gz |
factor vector duplication in vdup()
Diffstat (limited to 'lisc/isel.c')
-rw-r--r-- | lisc/isel.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/lisc/isel.c b/lisc/isel.c index e4a10c8..126baf7 100644 --- a/lisc/isel.c +++ b/lisc/isel.c @@ -662,11 +662,8 @@ isel(Fn *fn) assert(i->op != OArg && i->op != OArgc); emit(i->op, i->wide, i->to, i->arg[0], i->arg[1]); } - n = &insb[NIns] - curi; - free(b->ins); - b->ins = alloc(n * sizeof b->ins[0]); - memcpy(b->ins, curi, n * sizeof b->ins[0]); - b->nins = n; + b->nins = &insb[NIns] - curi; + vdup(&b->ins, curi, b->nins * sizeof(Ins)); } if (debug['C']) { @@ -708,11 +705,8 @@ isel(Fn *fn) for (i=&b->ins[b->nins]; i>b->ins;) { sel(*--i, fn); } - n = &insb[NIns] - curi; - free(b->ins); - b->ins = alloc(n * sizeof b->ins[0]); - memcpy(b->ins, curi, n * sizeof b->ins[0]); - b->nins = n; + b->nins = &insb[NIns] - curi; + vdup(&b->ins, curi, b->nins * sizeof(Ins)); } if (debug['I']) { |