Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
During the tiling process we sometimes add tiles for the labels in conditional expressions, that have no operator associated. However, the operator in memory would then be 0, which is a valid operator type. That didn't matter until I changed the order of LOAD and COPY, since COPY is special-cased in the register allocator to make a reference - the register allocator would then create a cycle in the union-find data structure and loop forever. Oops. One (valid) way to deal with it is to have pseudotiles initialized to an invalid value like -1. But I think I tried that once and it ran into problems (maybe due to invalid operator info). So instead, I'm declaring the 'zero' operator to be illegal, and also, I'm starting nodes from 1, so that no valid reference is ever zero.
- Loading branch information