Mwepụta nke LLVM 11.0 compiler suite

Mgbe ọnwa isii nke mmepe ọkọnọ ntọhapụ oru ngo LLVM 11.0 - Ngwa GCC dakọtara (ndị nchịkọta, optimizers na code generators), na-achịkọta mmemme n'ime bitcode etiti nke RISC-dị ka ntuziaka mebere (igwe mebere ọkwa dị ala nke nwere usoro nhazi ọkwa dị iche iche). Enwere ike ịtụgharị pseudocode emepụtara site na iji mkpokọta JIT ka ọ bụrụ ntuziaka igwe ozugbo n'oge mmebe mmemme.

Mgbanwe bụ isi na ntọhapụ ọhụrụ bụ ntinye nke N'akụkụ, ihu ihu maka asụsụ Fortran. Flang na-akwado Fortran 2018, OpenMP 4.5 na OpenACC 3.0, mana mmepe nke oru ngo emezubeghị na njedebe n'ihu na-ejedebe na nhazi koodu na ịlele maka izi ezi. akwadobeghị ọgbọ nke koodu etiti LLVM yana iji wepụta faịlụ enwere ike ime, ewepụtara koodu canonical ma nyefee ya na mkpokọta Fortran dị na mpụga.

Mmeli mma na Clang 11.0:

  • agbakwunyere ike iweghachi osisi syntax abstract (AST) maka koodu C ++ mebiri emebi, nke enwere ike iji nyere aka chọpụta mmejọ ma nyekwuo ozi na akụrụngwa mpụga dị ka clang-tidy na clangd. Ejiri njirimara a na ndabara maka koodu C++ ma na-achịkwa ya site na nhọrọ "-Xclang -f[no-]recovery-ast".
  • Ụdị nchọpụta nchọpụta ọhụrụ agbakwunyere:
    • “-Wpointer-to-int-cast” bụ otu ịdọ aka ná ntị gbasara ịtụ ntụnye n'ụdị int int nke na-anabataghị ụkpụrụ niile enwere ike.
    • "-Wuninitialized-const-reference" - ịdọ aka ná ntị gbasara ịfefe mgbanwe na-enweghị mmalite na paramita ọrụ na-anabata arụmụka ntụnyere na njirimara "const".
    • "-Wimplicit-const-int-float-conversion" - enyere aka site na ịdọ aka ná ntị ndabara gbasara ngbanwe doro anya nke ezigbo mgbe niile gaa na ụdị integer.
  • Maka ikpo okwu ARM, a na-enye ọrụ C arụnyere n'ime ihe nchịkọta (Intrinsics), dochie ya nke ọma vector ntuziaka Arm v8.1-M MVE na CDE. A kọwapụtara ọrụ ndị dị na faịlụ nkụnye eji isi mee arm_mve.h na arm_cde.h.
  • agbakwunyere otu ụdị integer agbatịkwuru _ExtInt(N), na-enye gị ohere ịmepụta ụdị na-abụghị ọnụọgụ ike nke abụọ, nke enwere ike ịhazi nke ọma na FPGA/HLS. Dịka ọmụmaatụ, _ExtInt(7) na-akọwa ụdị integer nwere 7 ibe n'ibe.
  • Macros agbakwunyere na-akọwa nkwado maka ọrụ arụnyere C dabere na ntuziaka ARM SVE (Scalable Vector Extension):
    __ARM_FEATURE_SVE, __ARM_FEATURE_SVE_BF16,
    __ARM_FEATURE_SVE_MATMUL_FP32, __ARM_FEATURE_SVE_MATMUL_FP64,
    __ARM_FEATURE_SVE_MATMUL_INT8,
    __ARM_FEATURE_SVE2, __ARM_FEATURE_SVE2_AES,
    __ARM_FEATURE_SVE2_BITPERM,
    __ARM_FEATURE_SVE2_SHA3,
    __ARM_FEATURE_SVE2_SM4. Dịka ọmụmaatụ, akọwara __ARM_FEATURE_SVE macro mgbe ị na-emepụta koodu AArch64 site na ịtọ nhọrọ ahịrị iwu "-march=armv8-a+sve".

  • A na-amata ọkọlọtọ "-O" ugbu a na ọnọdụ njikarịcha "-O1" kama ịbụ "-O2".
  • Ọkọlọtọ mkpokọta ọhụrụ agbakwunyere:
    • "-fstack-clash-protection" - na-enyere nchebe megide intersection nke tojupụtara na ikpo.
    • "-ffp-exception-behavior={na-eleghara,maytrap,strict}" - na-enye gị ohere ịhọrọ ụdị njikwa ewepụrụ maka ọnụọgụ n'elu mmiri.
    • "-ffp-model={kpọmkwem, siri ike, ngwa ngwa}" - Na-eme ka ọ dị mfe ịnweta usoro nhọrọ pụrụ iche maka ọnụọgụ n'elu mmiri.
    • "-fpch-codegen" na "-fpch-debuginfo" iji mepụta nkụnye eji isi mee (PCH) nwere faịlụ ihe dị iche iche maka koodu na debuginfo.
    • "-fsanitize-coverage-allowlist" na "-fsanitize-coverage-blocklist" maka ịlele mkpuchi nwale ndepụta ọcha na ojii.
    • "-mtls-size={12,24,32,48}" iji họrọ nha TLS (thread-local storage) nha.
    • "-menable-experimental-extension" iji mee ka ndọtị RISC-V nnwale nnwale.
  • Ụdị ndabara maka C bụ "-fno-common", nke na-enye ohere maka ịnweta mgbanwe zuru ụwa ọnụ nke ọma na ụfọdụ nyiwe.
  • Ebufere cache modul ndabara site na /tmp gaa na ~/.cache directory. Iji kagbuo, ị nwere ike iji ọkọlọtọ "-fmodules-cache-path=".
  • Emelitela ọkọlọtọ asụsụ C nke ndabara site na gnu11 ruo gnu17.
  • agbakwunyere nkwado mbido maka ndọtị GNU C "asm inline»ịgbakwunye ntinye ihe nkpọkọta. A ka na-enyocha ndọtị ahụ, mana anaghị edozi ya n'ụzọ ọ bụla.
  • Ike ejikọtala na nkwado OpenCL na CUDA. Nkwado agbakwunyere maka nchọpụta ihe mgbochi OpenCL 2.0 wee mejuputa atụmatụ OpenMP 5.0 ọhụrụ.
  • Agbakwunyere nhọrọ IndentExternBlock ka ọ bụrụ ihe eji eme ihe maka itinye n'usoro n'ime "C" na mpụ "C++".
  • Ihe nyocha static emeela ka njikwa ndị nrụpụta eketara ketara na C++ ka mma. Agbakwunyere nlele ọhụrụ alpha.core.C11Lock na alpha.fuchsia.Lock iji lelee maka mkpọchi, alpha.security.cert.pos.34c iji chọpụta adịghị mma ojiji nke putenv, webkit.NoUncountedMemberChecker na webkit.RefCntblBaseVirtualDtor iji chọpụta nsogbu nwere ụdị enweghị ike ịgụta ọnụ, alpha. .cplusplus .SmartPtr ka ịlele maka enweghị isi ihe nrịbama nrịbama.
  • Na linter clang-dị mma agbakwunyere nnukwu akụkụ nke nlele ọhụrụ.
  • Ihe nkesa caching clangd (Clang Server) emelitela arụmọrụ yana gbakwunye ike nchọpụta ọhụrụ.

Main ihe ọhụrụ LLVM 11.0:

  • Agbanwewo usoro ihe owuwu ahụ ka ọ bụrụ iji Python 3. Ọ bụrụ na Python 3 adịghị, ọ ga-ekwe omume ịlaghachi na iji Python 2.
  • Ewepụrụ n'ihu n'ihu ya na onye nchịkọta asụsụ Go (llgo) na mwepụta ahụ, nke enwere ike ịhazigharị n'ọdịnihu.
  • Agbakwunyere àgwà vector-function-abi-variant na nnochite anya etiti (IR) iji kọwaa nkewa n'etiti ọrụ scalar na vector iji mee ka oku ghara ịkpọ oku. Site na lvm :: VectorType enwere ụdị vector abụọ dị iche iche lvm :: FixedVectorType na lvm :: ScalableVectorType.
  • A na-amata alaka ụlọ ọrụ dabere na ụkpụrụ udef na ịfefe ụkpụrụ na-akwadoghị na ọrụ ọbá akwụkwọ ọkọlọtọ dị ka omume enweghị nkọwa. N'ime
    memset/memcpy/memmove na-enye ohere ịgafe ntụnye undef, mana ọ bụrụ na oke nwere nha bụ efu.

  • LLJIT agbakwunyela nkwado maka ịme mmalite mmalite site na LLJIT :: initialize na LLJIT :: deinitialize ụzọ. E tinyela ikike iji klaasị StaticLibraryDefinitionGenerator tinye ọba akwụkwọ static na JITDylib. Agbakwunyere C API maka ORCv2 (API maka iwulite ndị nchịkọta JIT).
  • agbakwunyere nkwado maka Cortex-A64, Cortex-A34, Cortex-A77 na Cortex-X78 processors na azụ azụ maka ihe owuwu AArch1. Emebere ARMv8.2-BF16 (BFloat16) na ARMv8.6-A ndọtị, gụnyere RMv8.6-ECV (Enhanced Counter Virtualization), ARMv8.6-FGT (Fine Grained Traps), ARMv8.6-AMU (Activity Monitors virtualization) na ARMv8.0-DGH (Ntụnye nchịkọta data). Enyere ikike ịmepụta koodu maka arụ ọrụ arụnyere-njikọ na ntụziaka vector SVE.
  • Nkwado maka Cortex-M55, Cortex-A77, Cortex-A78 na Cortex-X1 processors agbakwunyere na azụ azụ maka ihe owuwu ARM. Emebere ndọtị
    Armv8.6-A Matrix Multiply na RMv8.2-AA32BF16 BFloat16.

  • Agbakwunyela nkwado maka ọgbọ koodu maka ndị nrụpụta POWER10 na azụ azụ maka ihe owuwu PowerPC. A gbasaala njikarịcha loop yana kwalitekwa nkwado ebe na-ese n'elu mmiri.
  • Azụ azụ maka ihe owuwu RISC-V na-enye ohere ịnakwere patches na-akwado usoro nkuzi agbatịgoro nnwale nke akwadobeghị nke ọma.
  • Ebufeela azụ azụ maka ihe owuwu AVR site na ngalaba nnwale gaa kwụsie ike, gụnyere na nkesa bụ isi.
  • Azụ azụ maka ihe owuwu x86 na-akwado ntuziaka Intel AMX na TSXLDTRK. Nchekwa agbakwunyere megide mwakpo LVI (Ibu ihe bara uru injection), ma na-emejuputa atumatu izugbe Speculative Execution Side Effect Suppression usoro iji gbochie mwakpo sitere na ntule nke arụrụ ọrụ na CPU.
  • N'azụ azụ maka ihe owuwu SystemZ, agbakwunyela nkwado maka MemorySanitizer na LeakSanitizer.
  • Nkwado agbakwunyere maka faịlụ nkụnye eji isi mee nwere mgbakọ mgbakọ na mwepụ na Libc++ .
  • Gbasaa Ike njikọ LLD. Nkwado emelitere maka usoro ELF, gụnyere nhọrọ agbakwunyere "--lto-emit-asm", "--lto-dum-program-visibility", "-print-archive-stats", "-shuffle-sections", " -thinlto- otu-modul", "-pụrụiche", "-rosegment", "-threads=N". agbakwunyere nhọrọ "--time-trace" iji chekwaa trace ahụ na faịlụ, nke enwere ike nyochaa ya site na chrome://tracing interface na Chrome.

isi: opennet.ru

Tinye a comment