Kuburitswa kweLLVM 11.0 compiler suite

Mushure memwedzi mitanhatu yebudiriro yakaunzwa kuburitswa kweprojekiti LLVM 11.0 -GCC-inoenderana maturusi (macompilers, optimizers uye macode jenareta), achigadzira zvirongwa kuva yepakati bitcode yeRISC-senge mirairo chaiyo (yakaderera-level virtual muchina ine akawanda-level optimization system). Iyo pseudocode inogadzirwa inogona kushandurwa uchishandisa JIT compiler kuita mirairo yemuchina zvakananga panguva yekuitwa kwechirongwa.

Shanduko yakakosha mukuburitswa kutsva yaive yekubatanidzwa kwe Flank, kumberi kwemutauro weFortran. Flang inotsigira Fortran 2018, OpenMP 4.5 uye OpenACC 3.0, asi kusimudzira kweprojekiti hakusati kwapera uye kumberi kunogumira pakuparura kodhi uye kutarisa kuti ndeyechokwadi. Chizvarwa cheLLVM yepakati kodhi haisati yatsigirwa uye kugadzira mafaera anogoneka, canonical kodhi inogadzirwa uye inopfuudzwa kune yekunze Fortran compiler.

Kuvandudza muClang 11.0:

  • Yakawedzera kugona kudzoreredza iyo abstract syntax muti (AST) yekodhi C ++ yakaputsika, inogona kushandiswa kubatsira kuongorora zvikanganiso uye inopa rumwe ruzivo kune zvekunze zvinoshandiswa senge clang-tidy uye clangd. Iyo ficha inogoneswa nekusarudzika kweC ++ kodhi uye inodzorwa kuburikidza ne "-Xclang -f[no-]kudzoreredza-ast" sarudzo.
  • Yakawedzera nzira itsva dzekuongorora:
    • "-Wpointer-to-int-cast" iboka reyambiro pamusoro pekukanda zvinongedzo kune nhamba yemhando int isinga tambire zvese zvinogoneka kukosha.
    • "-Wunitialized-const-reference" - yambiro pamusoro pekupfuura zvisizvo zvisingaite mumaparamita ebasa anobvuma nharo dzereferensi ne "const" hunhu.
    • "-Wimplicit-const-int-float-conversion" - inogoneswa neyambiro yekusagadzika nezve kutendeuka kwakazara kweiyo chaiyo isingachinjiki kune izere mhando.
  • Yepuratifomu yeARM, C mabasa akavakirwa mumubatanidzwa anopiwa (Intrinsics), yakatsiviwa nemirairo yevector inoshanda Arm v8.1-M MVE uye CDE. Mabasa aripo anotsanangurwa mumusoro mafaira arm_mve.h uye arm_cde.h.
  • Added seti yemhando dzakatambanudzwa dzemhando _ExtInt(N), zvichikubvumidza kuti ugadzire mhando dzisiri kuwanda kwemasimba maviri, anogona kunyatsogadziriswa paFPGA/HLS. Somuenzaniso, _ExtInt(7) inotsanangudza mhando yemhando ine mabhiti manomwe.
  • Akawedzera macros anotsanangura tsigiro yeakavakirwa-muC mabasa akavakirwa paARM SVE (Scalable Vector Extension) mirairo:
    __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. Semuenzaniso, iyo __ARM_FEATURE_SVE macro inotsanangurwa kana ichigadzira AArch64 kodhi nekuisa yekuraira mutsara sarudzo "-march=armv8-a+sve".

  • Mureza we "-O" wave kuzivikanwa ne "-O1" optimization mode pachinzvimbo che "-O2".
  • Yakawedzera mireza mitsva yekubatanidza:
    • "-fstack-clash-protection" - inogonesa kudzivirira kubva mharadzano dze stack uye murwi.
    • "-ffp-exception-behavior={ignore,maytrap,strict}" - inokutendera kuti usarudze chibatiso chemhando yenhamba dzinoyangarara.
    • "-ffp-model={chaiyo,yakasimba,nekukurumidza}" - Inorerutsa kuwana kune dzakatevedzana dzemhando dzesarudzo dzenhamba dzinoyangarara.
    • "-fpch-codegen" uye "-fpch-debuginfo" kugadzira musoro wakatemerwa (PCH) une mafaera echinhu chakasiyana ekodhi uye debuginfo.
    • "-fsanitize-coverage-allowlist" uye "-fsanitize-coverage-blocklist" yekutarisa kuongororwa kwekuvhara rondedzero chena nenhema.
    • β€œ-mtls-size={12,24,32,48}” kuti usarudze saizi yeTLS (tread-local storage).
    • "-menable-experimental-extension" kugonesa kuyedza RISC-V yekuwedzera.
  • Iyo yekusarudzika modhi yeC ndeye "-fno-common", iyo inobvumira kuwana kwakaringana kuchinjika kwepasi rose pane mamwe mapuratifomu.
  • Chengetedzo yemodule yatamiswa kubva pa/tmp kuenda ku ~/.cache dhairekitori. Kuti uwedzere, unogona kushandisa "-fmodules-cache-path=" mureza.
  • Chimiro chemutauro weC chakagadziridzwa kubva pagnu11 kusvika gnu17.
  • Yakawedzera rutsigiro rwekutanga rweGNU C yekuwedzera "asm inlineΒ» kuwedzera assembler insert. Kuwedzerwa kuchiri kuongororwa, asi kwete kugadziriswa nenzira ipi zvayo.
  • Iwo masimba ane hukama neOpenCL uye CUDA rutsigiro akawedzerwa. Yakawedzera tsigiro yeOpenCL 2.0 block diagnostics uye yakaitwa nyowani OpenMP 5.0 maficha.
  • Yakawedzera IndentExternBlock sarudzo ye clang-fomati yekushandisa yekumisikidza mukati mekunze "C" uye ekunze "C ++" zvidhinha.
  • Iyo static analyzer yakavandudza kubata kwevakagarwa nhaka muC ++. Yakawedzera macheki matsva alpha.core.C11Lock uye alpha.fuchsia.Kiya kutarisa makiyi, alpha.security.cert.pos.34c kuona kushandiswa kusina kuchengeteka kwe putenv, webkit.NoUncountedMemberChecker uye webkit.RefCntblBaseVirtualDtor kuona maproblems asingaverengeki, alpha asingaverengeki .cplusplus .SmartPtr to check for null smart pointer dereference.
  • In linter clang-tidy akawedzera chikamu chikuru checheki itsva.
  • Iyo clangd caching server (Clang Server) yakavandudza mashandiro uye yakawedzera hunyanzvi hwekuongorora.

chikuru zvitsva LLVM 11.0:

  • Iyo yekuvaka system yakachinjirwa kushandisa Python 3. Kana Python 3 isipo, zvinokwanisika kudzoreredza kushandisa Python 2.
  • Iyo yekumberi ine muunganidzi weGo mutauro (llgo) haina kubatanidzwa kubva mukuburitswa, iyo inogona kugadziridzwa mune ramangwana.
  • Iyo vector-function-abi-variant hunhu yawedzerwa kune yepakati inomiririra (IR) kutsanangura mepu pakati pe scalar uye vector mabasa ekuvector kufona. Kubva kullvm ::VectorType kune marudzi maviri akaparadzana mavheta llvm::FixedVectorType uye llvm::ScalableVectorType.
  • Bazi rakavakirwa paudef kukosha uye kupfuudza undef kukosha kune akajairwa raibhurari mabasa anozivikanwa seasina kutsanangurwa maitiro. IN
    memset/memcpy/memmove inobvumira kupfuura undef anonongedzera, asi kana parameter ine saizi iri zero.

  • LLJIT yakawedzera rutsigiro rwekuita static yekutanga kuburikidza neLLJIT ::kutanga uye LLJIT ::deinitialize nzira. Iko kugona kuwedzera static maraibhurari kuJITDylib uchishandisa iyo StaticLibraryDefinitionGenerator kirasi yakaitwa. Yakawedzerwa C API ye ORCv2 (API yekuvaka JIT compilers).
  • Tsigiro yeCortex-A64, Cortex-A34, Cortex-A77 uye Cortex-X78 processors yakawedzerwa kuseri kweiyo AArch1 architecture. Implemented ARMv8.2-BF16 (BFloat16) uye ARMv8.6-A extensions, kusanganisira RMv8.6-ECV (Enhanced Counter Virtualization), ARMv8.6-FGT (Fine Grained Traps), ARMv8.6-AMU (Activity Monitors virtualization) uye ARMv8.0-DGH (Data kuunganidza zano). Iko kugona kugadzira kodhi yeakavakirwa-mukati mabasa-kusunga kune SVE vector mirairo inopihwa.
  • Tsigiro yeCortex-M55, Cortex-A77, Cortex-A78 uye Cortex-X1 processors yakawedzerwa kubackend yeArM architecture. Kuwedzerwa kwakaitwa
    Armv8.6-A Matrix Kuwanza uye RMv8.2-AA32BF16 BFloat16.

  • Tsigiro yekugadzira kodhi yePOWER10 processors yakawedzerwa kune backend yePowerPC architecture. Loop optimizations yakawedzerwa uye inoyangarara poindi rutsigiro yakagadziridzwa.
  • Iyo yekumashure yeRISC-V yekuvakisa inobvumira kugamuchirwa kwezvigamba zvinotsigira kuyedza yakawedzera mirairo seti iyo isati yatenderwa zviri pamutemo.
  • Iyo yekuseri kweiyo AVR yekuvaka yakatamiswa kubva muchikamu chekuyedza kuenda kune yakagadzikana, inosanganisirwa mukugovera kwekutanga.
  • Iyo yekumashure ye x86 architecture inotsigira Intel AMX uye TSXLDTRK mirairo. Yakawedzerwa dziviriro pakurwiswa LVI (Load Value Injection), uye zvakare inoshandisa yakajairwa Kuteedzera Kuuraya Side Effect Suppression mechanism yekuvharisa kurwiswa kunokonzerwa nekufungidzira kuuraya maoperation paCPU.
  • Mumashure ekuvakwa kweSystemZ, tsigiro yeMemorySanitizer uye LeakSanitizer yakawedzerwa.
  • Yakawedzera tsigiro yemusoro faira ine masvomhu anoramba aripo kuLibc++ .
  • Yakawedzerwa LLD linker kugona. Yakavandudzwa rutsigiro rweiyo ELF fomati, kusanganisira yakawedzerwa sarudzo "--lto-emit-asm", "--lto-whole-program-visibility", "-print-archive-stats", "-shuffle-sections", " -thinlto- single-module", "-yakasiyana", "-rosegment", "-threads = N". Yakawedzerwa "--time-trace" sarudzo yekuchengetedza iyo faira, iyo inogona kuongororwa kuburikidza ne chrome://tracing interface muChrome.

Source: opennet.ru

Voeg