diff options
author | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2015-08-20 13:38:32 -0400 |
---|---|---|
committer | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2015-09-15 23:01:32 -0400 |
commit | 7d36a71a2287e28312403ab12a6ca5b49c7a73b0 (patch) | |
tree | af2435fa5b5262dddeff3d0c15c57118a8b7a0dc /proto/heap.ml | |
parent | 1abed68cc3b14606d83d8b0ad7d2b5855c8801df (diff) | |
download | roux-7d36a71a2287e28312403ab12a6ca5b49c7a73b0.tar.gz |
fix two bugs in rega
The first one was not so bad, when we a parallel move clobbers one machine register in use, we used to free the temporary t* using it, mark the register as unavailable and allocate a new location for the t*. But this fails when all the registers are in use. In that case, the destination of the move must be in a register r1, so I require a swap of the register to copy (used by t*) with r1 and update the map accordingly. I would like to move all the above logic in a function dealing with clobbers in general. The second bug is in the parallel move compiler, this one was a little more nasty and could have caused much debugging pain. It would be reasonable to test it in a similar way that I did for the slota() allocator.
Diffstat (limited to 'proto/heap.ml')
0 files changed, 0 insertions, 0 deletions