Local checkout: cff07db629d
Here's the baseline stage1 size without instrumentation:
rust master *$ > $ llvm-size --format=sysv .\build\x86_64-pc-windows-msvc\stage1\bin\rustc_driver-6bca00ecd48151cb.dll
.\build\x86_64-pc-windows-msvc\stage1\bin\rustc_driver-6bca00ecd48151cb.dll :
section size addr
.text 93358380 6442455040
.rdata 31787826 6535815168
.data 327168 6567604224
.pdata 3726012 6568206336
.rustc 99696 6571933696
_RDATA 148 6572036096
.reloc 482128 6572040192
Total 129781358
In a stage2 build with instrumentation.diff applied, the .track_caller
section is 0.68% of the final binary size:
rust master *$ > $ llvm-size --format=sysv .\build\x86_64-pc-windows-msvc\stage2\bin\rustc_driver-2b6f3871b4cd6007.dll
.\build\x86_64-pc-windows-msvc\stage2\bin\rustc_driver-2b6f3871b4cd6007.dll :
section size addr
.text 85435900 6442455040
.rdata 30815430 6527893504
.data 327168 6558711808
.pdata 3775608 6559313920
.track_c 829904 6563090432
.rustc 98108 6563921920
_RDATA 148 6564020224
.reloc 487072 6564024320
Total 121769338
Note that the stage2 binary is 93.8% the size of the stage1 binary. I assume the >6% reduction in size between stage1 and stage2 builds is due to changes between beta and the current nightly that are not related to implicit caller location.