Improving textual IR format for nameless blocks

After watching a few different people get confused about nameless blocks in llvm IR, and recalling my own confusion a few years ago, I’d like to change the syntax slightly to make it a bit clearer.

This is similar to the change made for instruction names in a decade ago.

Two changes:

  1. Change the parsing of a numeric block label to parse as a value number rather than a string.
  2. When printing blocks, always print the value number as a proper label, except for the initial block.

See proposed change in

I’m in favour of this. I think it improves readability at low cost.

Thanks so much for making this happen. I have written many, many clang test cases with convoluted FileCheck regexes that match “label:” and “; :” so they pass with and without NDEBUG.

Great idea!