LLVM 18 will soon be relased. This post provides a summary of my contributions in this release cycle to record my learning progress.
- LLVM binary utility maintenance, e.g.
- compiler-rt maintenance, e.g.
- changed lsan to work with high-entropy ASLR for x86-64 Linux
- removed crypt and crypt_r interceptors to work with glibc
- implemented
interceptors for glibc 2.38
__isoc23_strtol
and__isoc23_scanf
family functions - tsan: Respect !nosanitize metadata and remove gcov special case
- -fsanitize=alignment: check memcpy/memmove arguments (#67766)
- LTO maintenance
- Improve diagnostics handling when parsing module-level inline assembly (#75726)
- MC maintenance
- [MC,AArch64] Suppress local symbol to STT_SECTION conversion for GOT relocations
- MC Make
.pseudo_probe
created sections deterministic after D91878 - Change
.reloc
to register used symbols - Change
SHF_LINK_ORDER
and section group parsing order to match GNU assembler
- AArch64
- Suppress local symbol to STT_SECTION conversion for GOT relocations
- Restrict MOVZ/MOVK to non-PIC large code model (#70178)
- clang: Define
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
for AArch64 (#74954)
- RISC-V
- Clean up code after improved assembler support for linker relaxation
- Support R_RISCV_SET_ULEB128/R_RISCV_SUB_ULEB128 for .uleb128 directives
- Parse SHF_LINK_ORDER argument before section group name (#77407)
- x86
- Support inline assembly constraint "Ws"
- Change displacement overflow when parsing assembly code (#75747)
- Fix MSVC-style inline assembly
call fptr
andjmp fptr
(#73207) - In 32-bit mode, fix FastISel
-fno-pic
for intrinsics (#51078) - clang: Support
arch=x86-64{,-v2,-v3,-v4}
fortarget_clones
attribute - clang:
__builtin_cpu_supports
: supportx86-64{,-v2,-v3,-v4}
- libunwind
- Bump to
CXX_STANDARD 17
(#75986)
- Bump to
lld
MC
- Removed many obsoleted workarounds from the integrated assembler
- Fixed placement of function entry comments
- Re-architectured a substantial part of the integrated assembler that is used by RISC-V linker relaxation, fixing some longstanding bugs. See The dark side of RISC-V linker relaxation for detail.
Clang
Driver maintenance
- [Driver] -###: exit with code 1 if hasErrorOccurred
- Report errors for target-specific options on unsupported targets
- Remove RequiresPIE and msan's NeedPIE setting (#77689)
- Add -fandroid-pad-segment/-fno-android-pad-segment (#77244)
- Support
-mtls-dialect=desc
Others:
- Function multi-versioning: don't set comdat for internal linkage resolvers
-fsanitize=alignment
: check memcpy/memmove arguments (#67766)