Tso tawm ntawm LLVM 13.0 compiler suite

Tom qab rau lub hlis ntawm txoj kev loj hlob, qhov kev tso tawm ntawm LLVM 13.0 qhov project tau nthuav tawm - GCC-tshaj cov cuab yeej (compilers, optimizers thiab code generators) uas muab cov kev pab cuam rau hauv nruab nrab bitcode ntawm RISC-zoo li cov lus qhia virtual (qib qis-theem virtual tshuab nrog a multi-level optimization system). Lub generated pseudocode tuaj yeem hloov dua siab tshiab siv JIT compiler rau hauv cov lus qhia tshuab ncaj qha thaum lub sijhawm ua haujlwm.

Kev txhim kho hauv Clang 13.0:

  • Siv kev txhawb nqa rau kev lees paub tus Tsov tus tw hu (hu rau lub subroutine ntawm qhov kawg ntawm kev ua haujlwm, tsim tus Tsov tus tw rov qab yog tias lub subroutine hu nws tus kheej). Kev them nyiaj yug rau kev hu xov tooj tau lees paub yog muab los ntawm "[[clang::musttail]]" tus cwj pwm hauv C ++ thiab "__attribute__((musttail))" hauv C, siv hauv nqe lus "rov qab". Lub feature tso cai rau koj los siv optimizations los ntawm deploying code rau hauv ib tug ca iteration kom txuag pawg noj.
  • "siv" cov lus tshaj tawm thiab clang extensions muab kev txhawb nqa rau kev txhais C ++ 11-style tus cwj pwm siv "[[]]" hom.
  • Ntxiv tus chij "-Wreserved-identifier" los tso saib cov lus ceeb toom thaum koj teev cov cim tshwj xeeb hauv cov neeg siv cov cai.
  • Ntxiv "-Wunused-but-set-parameter" thiab "-Wunused-tab sis-set-variable" chij los tso saib ceeb toom yog tias qhov parameter lossis qhov sib txawv tau teeb tsa tab sis tsis siv.
  • Ntxiv "-Wnull-pointer-subtraction" chij los tshaj tawm lus ceeb toom yog tias txoj cai yuav qhia txog tus cwj pwm tsis zoo vim yog siv tus taw tes tsis zoo hauv kev rho tawm haujlwm.
  • Ntxiv tus chij "-fstack-usage" los tsim rau txhua cov ntaub ntawv code ib qho ntxiv ".su" cov ntaub ntawv uas muaj cov ntaub ntawv hais txog qhov loj ntawm pawg thav ntawv rau txhua txoj haujlwm tau teev tseg hauv cov ntaub ntawv tau ua tiav.
  • Ib hom kev tso zis tshiab tau ntxiv rau qhov ntsuas zoo li qub - "sarif-html", uas ua rau tsim cov ntawv ceeb toom ib txhij hauv HTML thiab Sarif hom. Ntxiv tshiab allocClassWithName kos. Thaum qhia txog qhov kev xaiv "-analyzer-display-progress", lub sij hawm tsom xam ntawm txhua txoj haujlwm tau tshwm sim. Lub ntse pointer analyzer (alpha.cplusplus.SmartPtr) yuav luag npaj txhij.
  • Lub peev xwm cuam tshuam nrog kev txhawb nqa OpenCL tau nthuav dav. Ntxiv kev txhawb nqa tshiab txuas ntxiv cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields thiab __cl_clang_non_portable_kernel_param_types. Kev siv ntawm OpenCL 3.0 specification tau txuas ntxiv mus. Rau C, OpenCL 1.2 specification yog siv los ntawm lub neej ntawd tshwj tsis yog lwm qhov version raug xaiv meej. Rau C ++, kev txhawb nqa rau cov ntaub ntawv nrog qhov txuas ntxiv ".clcpp" tau ntxiv.
  • Kev them nyiaj yug rau kev hloov pauv cov lus qhia ("#pragma omp unrol" thiab "#pragma omp tile") tau ua tiav hauv OpenMP 5.1 specification.
  • Ntxiv cov kev xaiv rau clang-format utility: SpacesInLineCommentPrefix los txhais cov naj npawb ntawm qhov chaw ua ntej cov lus pom, IndentAccessModifiers, LambdaBodyIndentation thiab PPIndentWidth los tswj cov kev sib raug zoo ntawm kev nkag, lambda kab lus thiab cov lus qhia ua ntej. Cov muaj peev xwm txheeb xyuas cov lej ntawm cov ntaub ntawv header (SortIncludes) tau nthuav dav. Ntxiv kev txhawb nqa rau formatting JSON cov ntaub ntawv.
  • Ib feem loj ntawm cov tshev tshiab tau ntxiv rau linter clang-tidy.

Kev tsim kho tseem ceeb hauv LLVM 13.0:

  • Ntxiv qhov "-ehcontguard" kev xaiv los siv CET (Windows Control-flow Enforcement Technology) thev naus laus zis los tiv thaiv kev ua tiav ntawm kev siv dag zog tsim siv Cov Txheej Txheem Rov Qab Los-Oriented (ROP) cov txheej txheem ntawm qhov tshwj xeeb tuav theem.
  • Qhov debuginfo-test project tau hloov npe hu ua cross-project-tests thiab yog tsim los sim cov khoom los ntawm cov haujlwm sib txawv, tsis txwv rau cov ntaub ntawv debugging.
  • Kev sib sau ua ke muab kev txhawb nqa rau kev tsim ntau qhov kev faib khoom, piv txwv li, ib qho nrog cov khoom siv hluav taws xob, thiab lwm yam nrog cov tsev qiv ntawv rau cov neeg tsim khoom.
  • Nyob rau hauv lub backend rau AArch64 architecture, kev txhawb nqa rau Armv9-A RME (Realm Management Extension) thiab SME (Scalable Matrix Extension) txuas ntxiv yog siv nyob rau hauv lub assembler.
  • Kev them nyiaj yug rau ISA V68 / HVX tau ntxiv rau qhov backend rau Hexagon architecture.
  • Lub x86 backend tau txhim kho kev txhawb nqa rau AMD Zen 3 processors.
  • Ntxiv kev txhawb nqa rau GFX1013 RDNA2 APU rau AMDGPU backend.
  • Libc ++ tseem siv cov yam ntxwv tshiab ntawm C ++ 20 thiab C ++ 2b cov qauv, suav nrog kev ua tiav ntawm "cov tswv yim" lub tsev qiv ntawv. Ntxiv kev txhawb nqa rau std::filesystem rau MinGW-based Windows platform. Header cov ntaub ntawv sib cais , Thiab . Ntxiv kev xaiv tsim LIBCXX_ENABLE_INCOMPLETE_FEATURES los lov tes taw cov ntaub ntawv header uas tsis ua tiav kev ua haujlwm.
  • Lub peev xwm ntawm LLD linker tau nthuav dav, qhov kev txhawb nqa rau Big-endian Aarch64 processors yog siv, thiab Mach-O backend tau raug coj mus rau lub xeev uas tso cai rau txuas cov kev pabcuam tsis tu ncua. suav nrog kev txhim kho xav tau los txuas Glibc siv LLD.
  • Lub llvm-mca (Machine Code Analyzer) qhov hluav taws xob tau ntxiv kev txhawb nqa rau cov txheej txheem uas ua tiav cov lus qhia hauv kev txiav txim (hauv-kev txiav txim superscalar pipeline), xws li ARM Cortex-A55.
  • LLDB debugger rau AArch64 platform muab kev txhawb nqa tag nrho rau Pointer Authentication, MTE (MemTag, Memory Tagging Extension) thiab SVE cov npe. Ntxiv cov lus txib uas tso cai rau koj los khi cov cim npe rau txhua lub cim xeeb faib ua haujlwm thiab teeb tsa ib daim tshev ntawm tus taw tes thaum nkag mus rau lub cim xeeb, uas yuav tsum tau txuam nrog qhov tseeb tag.
  • Lub LLDB debugger thiab lub frontend rau cov lus Fortran - Flang tau ntxiv rau binary sib dhos tsim los ntawm qhov project.

Tau qhov twg los: opennet.ru

Ntxiv ib saib