After six months of development, the launch of the new version of the project «LLVM 13.0» has just been presented GCC-compliant (compilers, optimizers, and code generators) that compiles programs into an intermediate bitcode of virtual instructions similar to RISC (a low-level virtual machine with a multi-level optimization system).
In this new version, various changes and novelties have been added, of which support enhancements highlighted as well as the implementation of the new features of C ++ 20 and C ++ 2b among other things.
Main new features of LLVM 13.0
In this new version we can find that sand added "-ehcontguard" option to use CET technology (Windows Control-flow Enforcement Technology) to protect in the exception handling stage of the execution of exploits built using Return-Oriented Programming (ROP) techniques.
Besides, andThe debuginfo-test project has been renamed to cross-project-tests and it is designed to test components from multiple projects, not limited to debugging information, and the build system provides support for building multiple distributions, for example one with utilities and the other with developer libraries.
Moreover Libc ++ continues to implement new features from the C ++ 20 and C ++ 2b standards, including completion of the 'concepts' library, plus added support for std: filesystem for Windows based on MinGW, also separate header files , and and the LIBCXX_ENABLE_INCOMPLETE_FEATURES build option was added to disable header files with incompletely implemented functionality.
While backend for AArch64 architecture supports Armv9-A RME extensions (Realm Management Extension) and SME (Scalable Matrix Extension) in assembler, ISA V68 / HVX support added to the Hexagon architecture backend and the x86 backend improved compatibility with AMD Zen 3 processors and added support for GFX1013 RDNA2 APUs to the AMDGPU backend.
The capabilities of the LLD linker, which implements support for Big-endian Aarch64 processors, have also been expanded, and the Mach-O backend has been brought to a state that allows ordinary programs to be linked. It includes the necessary enhancements to link Glibc using LLD.
The llvm-mca (Machine Code Analyzer) utility adds support for in-order superscalar pipe processors, such as ARM Cortex-A55.
The LLDB debugger for the AArch64 platform provides full support for pointer authentication, MTE (MemTag, Memory Tagging Extension) and SVE registers, plus commands have been added that allow you to bind tags to each memory allocation operation and organize, when accessing memory, checking the pointer that should be associated with the tag correct.
The LLDB debugger and the Fortran - Flang interface have been added to the binary assemblies generated by the project.
As for the Clang 13.0 highlights improvements:
- Support for guaranteed queue calls (a subroutine call at the end of a function, which forms a queue recursion if the subroutine calls itself) has been implemented.
- Added the "-Wunused-but-set-parameter" and "-Wunused-but-set-variable" flags to display a warning if a parameter or variable is set but not used.
- Added the "-Wnull-pointer-subtraction" flag to display a warning if the code may lead to undefined behavior due to the use of a null pointer in subtraction operations.
- Added the "-fstack-use" flag to generate for each code file an additional ".su" file that contains information about the size of the stack frames for each function defined in the processed file.
- A new type of output has been added to the static parser, "sarif-html", which results in the generation of reports simultaneously in HTML and Sarif formats.
- Added a new check for allocClassWithName. When the "-analyzer-display-progress" option is specified, the parse time for each function is displayed. The smart pointer parser (alpha.cplusplus.SmartPtr) is almost ready.
- Support has been implemented for the loop transformation directives ("#pragma omp unrol" and "#pragma omp tile"), defined in the OpenMP 5.1 specification.
- A large portion of the new checks have been added to linter clang-tidy.
Finally If you are interested in knowing more about it, you can check the details In the following link.