LLVM 19 will soon be released. This post provides a summary of mycontributions in this release cycle to record my learning progress.
I optimized the bit mixer used byllvm::DenseMap<std::pair<X, Y>>
andllvm::DenseMap<std::tuple<X...>>
.llvm/ADT/Hashing.h
, used by StringRef
hashingand DenseMap
, was supposed to be non-deterministic. Despitethis, a lot of code relied on a specific iteration order. I mademultiple fixes across the code base and landed [Hashing] Use anon-deterministic seed if LLVM_ENABLE_ABI_BREAKING_CHECKS to improvetest coverage (e.g. assertion builds) and ensure future flexibility toreplace the algorithm.
The change has a noticeable code size reduction 1
2
3
4
5
6
7
8
9# old
movq _ZN4llvm7hashing6detail19fixed_seed_overrideE@GOTPCREL(%rip), %rax
movq (%rax), %rax
testq %rax, %rax
movabsq $-49064778989728563, %rcx # imm = 0xFF51AFD7ED558CCD
cmoveq %rcx, %rax
# new
movabsq $-49064778989728563, %rcx
... and significantcompile time improvement.
I optimizedDenseMap::{find,erase}
, yielding compile timeimprovement.
The significant code size decrease from replacing Hashing.h bit mixerand simplifying/optimizing DenseMap
code highlightspotential implementation challenges. While boost::unordered_flat_map
,Abseil's Swiss Table, and Folly's F14 are likely faster, they couldincrease the code size significantly.
NumericalStabilitySanitizer is a new feature for the 19.x releases. Ihave made many changes on the compiler-rt part.
Driver maintenance
[Driver] Support -Wa,--defsym similar to -Wa,-defsym
.Options used by the LLVM integrated assembler are currently handledin an ad-hoc way. There is deduplication with and without LTO.Eventually we might want to adopt TableGen for these -Wa,
options.
Others:
llvm/ADT/Hashing.h
I reviewed a wide range of patches, including areas like ADT/Support,binary utilities, MC, lld, clangDriver, LTO, sanitizers, LoongArch,RISC-V, and new features like NumericalStabilitySanitizer andRealTimeSanitizer.
To quantify my involvement, a search for patches I commented on(repo:llvm/llvm-project is:pr -author:MaskRay commenter:MaskRay created:>2024-01-23
)yields 780 results.