I reorganized the code a bit more, trying not to really sacrifice readability and other qualities. Now (with fancy_business dummies in place, these are obviously not committed), the code size changes thus on x86_64:
dwarf_formaddr 126 263 +137 2.09 dwarf_formref_die 200 443 +243 2.21 dwarf_formstring 162 345 +183 2.13 dwarf_formudata 389 598 +209 1.54 dwarf_getaranges 1144 1610 +466 1.41 dwarf_getlocation 115 118 +3 1.03 dwarf_getlocation_addr 1117 948 -169 0.85 dwarf_getpubnames 1247 1387 +140 1.11 dwarf_getsrclines 5358 5407 +49 1.01 dwarf_nextcu 453 721 +268 1.59 dwarf_ranges 694 797 +103 1.15 getlocation 1585 1829 +244 1.15
That's similar to the numbers I posted first time around, and we're back to 2.0% of .text increase. The tests are spinning now.
I also got rid of the cosmetic thing with defining multiple variables per line. Both is on the branch.
PM