Block numbers are updated too frequently, which makes it difficult to keep analyses up to date. Therefore, introduce a second number per basic block that is used for analyses and is renumbered less often. This frees analyses from providing somewhat efficient facilities for dealing with changed block numbers, making it simpler to implement in e.g. LoopInfo or CycleInfo. (Currently, "less often" means not at all, but we might want to renumber after certain passes if the numbering gets too sparse and no analyses are preserved anyway.) When we introduced a more general use of block numbers some time ago, using the existing numbers seemed to be a somewhat obvious choice, but I now think that this was a bad decision, as it conflates a number that is used for ordering with a number that should be more stable. MachineBasicBlock isn't particularly size-optimized and there's a fair amount of padding where we can add another number. There should be no performance impact,
63 KiB
63 KiB