The basic idea to this is that a) having a single canonical type makes CSE easier, and b) many of our transforms are inconsistent about which types we end up with based on visit order.
I'm restricting this to constants as for non-constants, we'd have to decide whether the simplicity was worth extra instructions. For constants, there are no extra instructions.
A couple process notes:
- Sorry for the lack of context, there's so many test changes that phabricator choked on a full context diff.
- This isn't all of the test diffs, only the autogened ones. If we're happy with the direction, I'll autogen a bunch of files, and then update the rest before submit.
clang-format: please reformat the code