Tso tawm ntawm LLVM 15.0 compiler suite

Tom qab rau lub hlis ntawm txoj kev loj hlob, qhov kev tso tawm ntawm LLVM 15.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 loj hauv Clang 15.0:

  • Rau cov tshuab raws li x86 architecture, tus chij "-fzero-hu-siv-regs" tau ntxiv, uas ua kom ntseeg tau tias tag nrho CPU cov ntawv sau npe siv hauv kev ua haujlwm raug rov qab mus rau xoom ua ntej rov qab los ntawm kev ua haujlwm. Qhov kev xaiv no tso cai rau koj los tiv thaiv cov ntaub ntawv xa tawm los ntawm kev ua haujlwm thiab txo tus naj npawb ntawm cov blocks tsim nyog rau lub tsev ROP (Rov-Oriented Programming) gadgets hauv kev siv los ntawm kwv yees li 20%.
  • Randomization ntawm lub cim xeeb tso ntawm cov qauv rau C code tau siv, uas ua rau nyuaj rau kev rho tawm cov ntaub ntawv los ntawm cov qauv hauv qhov xwm txheej ntawm kev siv qhov tsis zoo. Randomization yog qhib thiab tawm siv lub randomize_layout thiab no_randomize_layout cwj pwm, thiab yuav tsum tau teem ib lub noob siv lub "-frandomize-layout-noob" lossis "-frandomize-layout-noob-file" chij.
  • Ntxiv "-fstrict-flex-arrays=" chij ", nrog rau qhov uas koj tuaj yeem tswj tau ciam teb rau qhov hloov pauv hloov pauv hauv cov qauv (cov tswv cuab yooj yim Array, ib qho array ntawm qhov loj me me ntawm qhov kawg ntawm cov qauv). Thaum teem rau 0 (default), lub xeem lub ntsiab ntawm cov qauv nrog ib tug array yog ib txwm ua raws li ib tug saj zawg zog array, 1 - tsuas yog qhov ntau thiab tsawg [], [0] thiab [1] yog ua tiav raws li ib tug saj zawg zog array, 2 - tsuas yog qhov ntau thiab tsawg [] thiab [0] raug ua tiav zoo li cov array hloov tau.
  • Ntxiv kev sim txhawb rau C-zoo li hom lus HLSL (High-Level Shader Language), siv hauv DirectX rau kev sau ntawv shaders.
  • Ntxiv "-Warray-parameter" ceeb toom txog overriding functions nrog incompatible argument declarations txuam nrog taag- thiab txawv txawv-ntev arrays.
  • Txhim kho kev sib raug zoo nrog MSVC. Ntxiv kev txhawb nqa rau "#pragma muaj nuj nqi" (qhia rau lub compiler los tsim ib qho kev hu xov tooj es tsis txhob inline expansion) thiab "#pragma alloc_text" (txhais lub npe ntawm ntu nrog cov lej ua haujlwm) muab hauv MSVC. Ntxiv kev txhawb nqa rau MSVC-tshaj / JMC thiab / JMC chij.
  • Kev ua haujlwm txuas ntxiv txhawb nqa yav tom ntej C2X thiab C ++ 23 tus qauv. Rau cov lus C, cov hauv qab no yog siv: tus cwj pwm noreturn, cov ntsiab lus tsis tseeb thiab tseeb, _BitInt(N) hom rau cov lej ntawm qhov muab me ntsis tob, *_WIDTH macros, u8 prefix rau UTF-8 encoded cim.

    Rau C ++, cov hauv qab no yog siv: module merging, ABI cais ntawm cov tswv cuab muaj nuj nqi, kom dynamic pib ntawm non-loj variables nyob rau hauv modules, multidimensional Performance index tswv, auto(x), non-literal variables, goto thiab labels in functions declared as constexpr , delimited khiav sequences, lub npe khiav khiav.

  • Lub peev xwm cuam tshuam nrog OpenCL thiab OpenMP kev txhawb nqa tau nthuav dav. Ntxiv kev txhawb nqa rau OpenCL txuas ntxiv cl_khr_subgroup_rotate.
  • Rau x86 architecture, kev tiv thaiv tau ntxiv tawm tsam qhov tsis zoo hauv cov txheej txheem ua haujlwm los ntawm kev ua tiav cov lus qhia tom qab tsis muaj kev cuam tshuam rau pem hauv ntej dhia haujlwm. Qhov teeb meem tshwm sim vim ua ntej emptive cov lus qhia tam sim ntawd tom qab cov lus qhia ntawm ceg hauv kev nco (SLS, Straight Line Speculation). Txhawm rau ua kom muaj kev tiv thaiv, qhov kev xaiv "-mharden-sls = [tsis muaj | tag nrho | rov qab | indirect-jmp]" yog npaj.
  • Rau cov platforms uas txhawb nqa SSE2 txuas ntxiv, hom _Float16 tau ntxiv, uas yog emulated siv hom ntab nyob rau hauv rooj plaub uas tsis muaj kev txhawb nqa rau AVX512-FP16 cov lus qhia.
  • Ntxiv "-m[no-]rdpru" chij los tswj kev siv RDPRU cov lus qhia, txhawb nqa pib nrog AMD Zen2 processors.
  • Ntxiv rau "-mfunction-return = thunk-extern" chij los tiv thaiv RETBLEED qhov tsis zoo, uas ua haujlwm los ntawm kev ntxiv ib ntu ntawm cov lus qhia uas tsis suav nrog kev koom tes ntawm kev xav txog kev ua tiav rau cov ceg tsis ncaj.

Kev tsim kho tseem ceeb hauv LLVM 15.0:

  • Ntxiv kev txhawb nqa rau Cortex-M85 CPU, Armv9-A, Armv9.1-A thiab Armv9.2-A architectures, Armv8.1-M PACBTI-M txuas ntxiv.
  • Ib qho kev sim backend rau DirectX tau ntxiv uas txhawb nqa DXIL (DirectX Intermediate Language) hom siv rau DirectX shaders. Lub backend tau qhib los ntawm kev qhia qhov "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX" parameter thaum sib dhos.
  • Libc ++ tseem siv cov yam ntxwv tshiab ntawm C ++ 20 thiab C ++ 2b cov qauv, suav nrog kev ua tiav ntawm kev ua tiav ntawm "hom ntawv" lub tsev qiv ntawv thiab cov kev sim version ntawm lub tsev qiv ntawv "ntau yam".
  • Txhim kho backends rau x86, PowerPC thiab RISC-V architectures.
  • Lub peev xwm ntawm LLD txuas thiab LLDB debugger tau txhim kho.

Tau qhov twg los: opennet.ru

Ntxiv ib saib