Ukukhutshwa kwe-LLVM 11.0 yokuhlanganisa suite

Emva kweenyanga ezintandathu zophuhliso thaca ukukhutshwa kweprojekthi I-LLVM 11.0 - Izixhobo ezihambelanayo ne-GCC (abahlanganisi, abalungiseleli kunye nabavelisi beekhowudi), ukuqulunqa iinkqubo kwi-bitcode ephakathi ye-RISC-njengemiyalelo ebonakalayo (inqanaba eliphantsi lomatshini we-virtual one-multi-level optimization system). I-pseudocode eyenziweyo inokuguqulwa ngokusebenzisa i-JIT compiler kwimiyalelo yomatshini ngokuthe ngqo ngexesha lokwenziwa kweprogram.

Utshintsho oluphambili ekukhutshweni okutsha kwaba kubandakanywa Icala, umphambili wolwimi lwaseFortra. I-Flang ixhasa i-Fortran 2018, i-OpenMP 4.5 kunye ne-OpenACC 3.0, kodwa ukuphuhliswa kweprojekthi akukagqithwanga kwaye isiphelo sangaphambili silinganiselwe kwikhowudi yokwahlula kunye nokujonga ukuchaneka. Ukuveliswa kwekhowudi ye-LLVM ephakathi akukaxhaswa kwaye ukuvelisa iifayile eziphunyeziweyo, ikhowudi ye-canonical iveliswa kwaye idluliselwe kumqokeleli wangaphandle weFortran.

Uphuculo kwiClang 11.0:

  • Yongezwe ukukwazi ukubuyisela umthi we-syntax abstract (AST) yekhowudi ye-C ++ eyaphukileyo, enokusetyenziswa ukunceda ukuxilonga iimpazamo kwaye inike ulwazi olongezelelweyo kwizinto eziluncedo zangaphandle ezifana ne-clang-tidy kunye ne-clangd. Isici senziwe ngokuzenzakalelayo kwikhowudi ye-C ++ kwaye ilawulwa ngeendlela "-Xclang -f[no-]recovery-ast".
  • Kongezwe iindlela ezintsha zokuxilonga:
    • β€œ-Wpointer-to-int-cast” liqela lezilumkiso malunga nokuphosa izikhombisi kudidi olupheleleyo lwe-int olungahambelani nawo onke amaxabiso anokwenzeka.
    • β€œ-Wuninitialized-consst-reference” - isilumkiso malunga nokudlula izinto eziguquguqukayo ezingaqaliswanga kwiiparamitha zokusebenza ezamkela iimpikiswano zereferensi kunye nophawu loyelelwano "const".
    • "-Wimplicit-const-int-float-conversion" - yenziwe ngesilumkiso esihlala sihleli malunga noguqulo olufihlakeleyo lwenani elipheleleyo kudidi olupheleleyo.
  • Kwiqonga le-ARM, imisebenzi ye-C eyakhelwe kumqokeleli inikezelwe (Izinto zangaphakathi), endaweni yemiyalelo yevektha esebenzayo Ingalo v8.1-M MVE kunye neCDE. Imisebenzi ekhoyo ichazwa kwiifayile zeheader arm_mve.h ne arm_cde.h.
  • Yongeziwe uluhlu olwandisiweyo lweentlobo ezipheleleyo _ExtInt(N), ikuvumela ukuba wenze iindidi ezingezizo iziphindaphindo zamagunya amabini, anokusetyenzwa ngokufanelekileyo kwiFPGA/HLS. Ngokomzekelo, _ExtInt(7) ichaza uhlobo olupheleleyo oluquka amasuntswana asi-7.
  • Iimakhro ezongeziweyo ezichaza inkxaso yemisebenzi eyakhelwe-ngaphakathi ye-C esekwe kwi-ARM SVE (iScalable Vector Extension) imiyalelo:
    __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. Umzekelo, i- __ARM_FEATURE_SVE macro ichazwa xa kusenziwa ikhowudi ye-AArch64 ngokuseta ukhetho lomgca womyalelo "-march=armv8-a+sve".

  • I-"-O" iflegi ngoku ichongiwe nge-"-O1" yemowudi yokuphucula endaweni ka-"-O2".
  • Kongezwe iiflegi ezintsha zokuhlanganisa:
    • "-fstack-clash-protection" - yenza ukhuseleko ngokuchasene Ukudibana kwemfumba kunye nemfumba.
    • "-ffp-exception-behavior={ignore,maytrap,strict}" - ikuvumela ukuba ukhethe imo yesibambi yangaphandle kumanani amanqaku adadayo.
    • "-ffp-model={precise,strict,fast}" -Yenza ufikelelo kuthotho lweenketho ezikhethekileyo kumanani eendawo ezidadayo.
    • "-fpch-codegen" kunye "-fpch-debuginfo" ukuvelisa isihloko esihlanganiswe kwangaphambili (PCH) kunye neefayile zezinto ezahlukeneyo zekhowudi kunye ne-debuginfo.
    • "-fsanitize-coverage-allowlist" kunye "noluhlu lwe-coverage-coverage-blocklist" ukujonga uluhlu olumhlophe nolumnyama lokujonga uvavanyo.
    • β€œ-mtls-size={12,24,32,48}” ukukhetha i-TLS (umsonto wendawo yokugcina) ubungakanani.
    • "-menable-extension-extension-extension" ukwenza umfuniselo weRISC-V izandiso.
  • Imowudi engagqibekanga ye-C yi "-fno-common", evumela ukufikelela okusebenzayo ngakumbi kwiinguqu zehlabathi kwamanye amaqonga.
  • Uvimba wemodyuli ongagqibekanga ususiwe ukusuka /tmp ukuya ~/.cache ulawulo. Ukubhala ngaphezulu, ungasebenzisa "-fmodules-cache-path=" iflegi.
  • Umgangatho omiselweyo wolwimi lwe-C uhlaziyiwe ukusuka ku-gnu11 ukuya kwi-gnu17.
  • Inkxaso eyongeziweyo yolwandiso lwe-GNU C "asm emgceniΒ»ukongeza izihlanganisi. Ulwandiso lusahlalutywa, kodwa aluqwalaselwa nangayiphi na indlela.
  • Izakhono ezinxulumene nenkxaso ye-OpenCL kunye neCUDA zandisiwe. Inkxaso eyongeziweyo ye-OpenCL 2.0 yokuxilonga ibhloko kunye nokuphunyezwa kweempawu ezintsha ze-OpenMP 5.0.
  • Inketho eyongeziweyo ye-IndentExternBlock kusetyenziso lwe-clang-format yokulungelelaniswa ngaphakathi kweebhloko "C" zangaphandle kunye ne-"C++" yangaphandle.
  • Umhlalutyi we-static uye waphucula ukuphathwa kwabakhi abazuzwe njengelifa kwi-C ++. Kongezwe iitshekhi ezintsha ze-alpha.core.C11Tshixa kunye ne-alpha.fuchsia.Tshixa ukujonga izitshixo, i-alpha.security.cert.pos.34c ukukhangela ukusetyenziswa okungakhuselekanga kwe-putenv, i-webkit.NoUncountedMemberChecker kunye ne-webkit.RefCntblBaseVirtualDtor ukufumana iintlobo ze-alpha ezingabalekiyo .cplusplus .I-SmartPtr ukukhangela i-null smart pointer dereference.
  • Kwi-linter clang-coca yongezwe inxalenye enkulu yeetshekhi ezintsha.
  • Iseva ye-clangd caching (i-Clang Server) iphucule ukusebenza kwaye yongeza amandla amatsha okuxilonga.

Siseko ezintsha LLVM 11.0:

  • Inkqubo yokwakha itshintshelwe ekusebenziseni iPython 3. Ukuba iPython 3 ayifumaneki, kunokwenzeka ukubuyisela umva ekusebenziseni iPython 2.
  • Isiphelo esingaphambili esinomqokeleli wolwimi lwesiGo (llgo) asiqukwanga ekukhululweni, esinokuhlengahlengiswa kwixesha elizayo.
  • Uphawu lwe-vector-function-abi-variant longezwe kwi-intermediate representation (IR) ukuchaza imephu phakathi kwe-scalar kunye nemisebenzi ye-vector ukwenza iifowuni ze-vectorize. Ukusuka kwi-llvm::UHlobo lweVector kukho iindidi ezimbini ezahlukeneyo zevektha llvm::I-FixedVectorType kunye nellvm::ScalableVectorType.
  • Isebe esekwe kumaxabiso e-udef kunye nokudlula amaxabiso e-undef kwimisebenzi yethala leencwadi yamkelwa njengokuziphatha okungachazwanga. IN
    i-memset/memcpy/memmove ivumela ukudlula izikhombisi ze-undef, kodwa ukuba iparameter enobungakanani nguziro.

  • I-LLJIT yongeze inkxaso yokwenza ukuqaliswa okumileyo ngokusebenzisa i-LLJIT :: qalisa kunye ne-LLJIT ::i-deinitialize iindlela. Ukukwazi ukongeza amathala eencwadi amileyo kwiJITDylib usebenzisa iklasi yeStaticLibraryDefinitionGenerator iphunyeziwe. Added C API for ORCv2 (I-API yokwakha abaqulunqi be-JIT).
  • Inkxaso ye-Cortex-A64, i-Cortex-A34, i-Cortex-A77 kunye ne-Cortex-X78 iprosesa yongezwe ngasemva kwi-architecture ye-AArch1. Iphunyeziwe i-ARMv8.2-BF16 (BFloat16) kunye ne-ARMv8.6-A izandiso, kuquka i-RMv8.6-ECV (i-Enhanced Counter Virtualization), i-ARMv8.6-FGT (I-Fine Grained Traps), i-ARMv8.6-AMU (I-Activity Monitors virtualization) kunye ne-ARMv8.0-DGH (ingcebiso yokuqokelela idatha). Ikhono lokuvelisa ikhowudi yemisebenzi eyakhelwe-ngaphakathi-izibophelelo kwi-SVE imiyalelo ye-vector inikwe.
  • Inkxaso ye-Cortex-M55, i-Cortex-A77, i-Cortex-A78 kunye ne-Cortex-X1 iprosesa yongezwe kwi-backend ye-architecture ye-ARM. Ukwandiswa kuphunyeziwe
    I-Armv8.6-A Matrix Ukuphindaphinda kunye ne-RMv8.2-AA32BF16 BFloat16.

  • Inkxaso yokwenziwa kwekhowudi ye-POWER10 processors yongezwe ngasemva kuyilo lwePowerPC. Ukulungiswa kweLoop kwandisiwe kwaye inkxaso yendawo edadayo iphuculwe.
  • I-backend ye-RISC-V ye-architecture ivumela ukwamkelwa kweepetshi ezixhasa iiseti zemiyalelo eyandisiweyo yovavanyo engekavunywa ngokusemthethweni.
  • I-backend ye-architecture ye-AVR idluliselwe ukusuka kwinqanaba lokulinga ukuya kwi-stable, ifakwe kwi-distribution eyisiseko.
  • I-backend ye-x86 ye-architecture ixhasa i-Intel AMX kunye ne-TSXLDTRK imiyalelo. Ukhuseleko olongeziweyo kuhlaselo I-LVI (I-Load Value Injection), kwaye ikwaphumeza indlela yokuNciphisa i-Speculative Side Side Effect Suppression jikelele ukuvala uhlaselo olubangelwa kukwenziwa kwemisebenzi eqikelelwayo kwi-CPU.
  • Ngasemva kuyilo lweSystemZ, inkxaso yeMemorySanitizer kunye neLeakSanitizer yongeziwe.
  • Inkxaso eyongeziweyo yefayile yeheader enezigxina zezibalo kwiLibc++ .
  • Yandisiwe Izakhono zokudibanisa iLLD. Ukuphuculwa kwenkxaso yefomathi ye-ELF, kubandakanywa iinketho ezongezelelweyo "--lto-emit-asm", "--lto-whole-program-visibility", "-print-archive-stats", "-shuffle-sections", " -thinlto-imodyuli enye", "-eyodwa", "-rosegment", "-threads=N". Kongezwe "--time-trace" ukhetho lokugcina umkhondo kwifayile, enokuthi emva koko ihlalutywe nge-chrome://tracing interface kwiChrome.

umthombo: opennet.ru

Yongeza izimvo