This is more a question about how other folks work efficiently on the compiler, rather than a suggestion to change it.
I sometimes need to compare SIL dumps of the same function generated by two different versions of the compiler. Usually, the two have long stretches of code which are recognizably similar, but some instructions or basic blocks are present in one and not the other. Because SIL assigns increasing integers to each value/basic block, when one is missing it throws off everything for the rest of the function, which makes it hard to see the correspondence and understand what's different between them.
Does anyone have a good technique or tool for dealing with this? The solution I imagine would be to run a small tool which increments the numbers of all the instructions/basic blocks above the missing one (for instance, "bb14 on the left doesn't exist on the right, so change its bb14 to bb15, its bb15 to bb16, etc."), but maybe someone has a different suggestion.