Closed
Description
Look into cases where microbenchmarks are slower with PGO enabled.
#74873 (comment) has an initial list to check.
Issues uncovered
- Microbenchmarks where inliner runs out of budget with TieredPGO #85531
- PGO: redundant Tier0-instr promotions #84517
- Suspect
-p ETW
is not enabling the CLR rundown provider BenchmarkDotNet#2296 - Methods with both stackalloc and loops bypass tiering #85548
- JIT: widening stack memory loads can cause store-forward stalls #85957
Fixes
- JIT: use synthesis to repair some reconstruction issues #84312
- Fix simd12_t size #85362
- JIT: extend initial profile repair to more cases #84741
- Keep instrumentings some intrinsics #85130
- JIT: use blend rather then repair for profile inconsistencies #85171
- JIT: improve profile update for loop inversion #85265
- JIT: prepare for instrumentation before incorporating profile counts #85805
- JIT: produce consistent flow graph when producing or consuming profile data #85860
- JIT: fix another case of early flow graph divergence #85873
- JIT: assert if we see schema mismatches with dynamic pgo data #85898