QBE as an easy-to-embed library
https://c9x.me/git/qbe.git
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. |
||
---|---|---|
lisc | ||
proto |