This Weekend in Meson++ (December 15th)
It's been a while since I wrote about Meson++, or even worked on it, but I have made some changes since the last time I posted, and I thought it would be a good idea to write about them. Rewriting How Basic Blocks and Instructions are iterated, twice. The two biggest changes are tightly coupled, and hard to talk about separately. The rewriting of the Basic Block iteration code and the rewriting of the Global Value Numbering pass (GVN). GVN is a critical piece of an SSA based compiler, it tags every variable read and write with a globally unique number. With this information (and with phi nodes), we can easily simplify the program, and eventually propagate raw values into function calls. Our original block walking code had some issues. Those were correctness, and performance. On the correctness side it had two problems, the first is that it didn't necessarily walk the CFG (Control Flow Graph) such that a blocks predecessors were all visited before it was, despite the fact tha...