After six months of development is presented Project Release LLVM 13.0 – GCC-compatible toolkit (compilers, optimizers and code generators), compiling program to an intermediate Bitcode of RISC-like virtual instructions (low-level virtual machine with multi-level optimization system). The generated pseudocode can be converted using a JIT compiler into machine instructions directly at the time of execution of the program.
improvements in Cleng 13.0:
- supported support for guaranteed tail calls (subroutine call at the very end of the function forms Tail Recursion If the subroutine is caused by itself). Support for guaranteed tail calls is provided with the attribute “[[Clang :: Musttail]]” in C ++ and “__attribute __ ((musttail))” in C applications used in the “Return” expression. The ability to implement optimization through deploying code into a flat iteration to save stack spending.
- in the “Using” and CLANG declarations and extensions are implemented support for determining the attributes in the style of C ++ 11 using the [[]] format.
- Added the “-Wreserved-Identifier” flag for outputting a warning when specifying in the user code of reserved identifiers.
- Added flags “-wunused-button-set-parameter” and “-wunused-button-set-variable” to output warning if the parameter or variable is exhibited, but not used.
- Added “-WNull-Pointer-Subtraction” flag for output warning if the code can lead to uncertain behavior due to the use of a zero pointer in subtraction operations.
- Added the “-fstack-usage” flag for generating for each file with the code of an additional “.su” file containing information about the size of the stack frames for each function defined in the processed file.
- In the static analyzer, a new output type is added – “SARIF-HTML”, which leads to the formation of reports simultaneously in HTML and SARIF Faratma. Added new check AlloClasswithname. When specifying the “-nalyzer-display-progress” option, the analysis of each function analysis is provided. Almost brought to the readiness of the analyzer of smart pointers (alpha.cplusplus.smartptr).
- extended OpenCL support capabilities. Added support for new extensions CL_KHR_INTEGER_DOT_PRODUCT,
CL_KHR_EXTENDED_BIT_OPS, __CL_CLANG_BITFIELDS and __CL_CLANG_NON_PORTABLE_KERNEL_PARAM_TYPES. The OpenCL 3.0 specification is continued. For Si by default, the OpenCl 1.2 specification is involved, if another version is not clearly selected. For C ++ Added file support with extension “.ClCPP”.
/Media reports.