Ho lokolloa ha LLVM 11.0 compiler suite

Ka mor'a likhoeli tse tšeletseng tsa tsoelo-pele hlahisoa tokollo ea morero LLVM 11.0 - Lisebelisoa tse lumellanang le GCC (li-compilers, optimizers le lijenereithara tsa khoutu), ho bokella mananeo ka har'a bitcode ea bohareng ea RISC-joaloka litaelo tsa sebele (mochine oa boemo bo tlaase o nang le tsamaiso ea mekhoa e mengata ea ho ntlafatsa). Pseudocode e hlahisitsoeng e ka fetoloa ho sebelisoa JIT compiler hore e be litaelo tsa mochine ka ho toba nakong ea ts'ebetso ea lenaneo.

Phetoho ea bohlokoa tokollong e ncha e ne e le ho kenyelletsoa ha Letlapa, ntlha e ka pele bakeng sa puo ea Fortran. Flang e tšehetsa Fortran 2018, OpenMP 4.5 le OpenACC 3.0, empa tsoelo-pele ea morero ha e e-s'o phetheloe 'me ntlha e ka pele e lekanyelitsoe ho arola khoutu le ho hlahloba ho nepahala. Moloko oa khoutu ea mahareng ea LLVM ha e so tšehetsoe le ho hlahisa lifaele tse ka sebetsoang, khoutu ea canonical e hlahisoa ebe e fetisetsoa ho motlatsi oa kantle oa Fortran.

Lintlafatso ho Clang 11.0:

  • E ekelitse bokhoni ba ho khutlisetsa sefate sa syntax se sa bonahaleng (AST) bakeng sa khoutu ea C ++ e robehileng, e ka sebelisoang ho thusa ho hlahloba liphoso le ho fana ka boitsebiso bo eketsehileng ho lisebelisoa tsa ka ntle tse kang clang-tidy le clangd. Sebopeho se nolofalitsoe ke kamehla bakeng sa khoutu ea C ++ 'me e laoloa ka likhetho tsa "-Xclang -f[no-]recovery-ast".
  • E kentse mekhoa e mecha ea tlhahlobo:
    • “-Wpointer-to-int-cast” ke sehlopha sa litemoso mabapi le ho lahlela lisupa ho mofuta o felletseng oa int o sa amoheleng boleng bohle bo ka khonehang.
    • "-Wunitialized-const-reference" - temoso mabapi le ho fetisa mefuta e sa tsejoeng ho liparamente tsa ts'ebetso tse amohelang likhang tsa litšupiso tse nang le tšobotsi ea "const".
    • "-Wimplicit-const-int-float-conversion" - e lumelloa ke temoso ea kamehla mabapi le phetoho e hlakileng ea ntho e sa fetoheng ho ea ho mofuta o felletseng.
  • Bakeng sa sethala sa ARM, mesebetsi ea C e hahiloeng ka har'a komporo e fanoa (Litaba tsa ka hare), e nkeloe sebaka ke litaelo tse sebetsang hantle tsa vector Arm v8.1-M MVE le CDE. Mesebetsi e fumanehang e hlalositsoe lifaeleng tsa lihlooho arm_mve.h le arm_cde.h.
  • E kentsoe mefuta e mengata e atolositsoeng _ExtInt(N), e u lumellang hore u thehe mefuta eo e seng matla a mangata a mabeli, a ka sebetsoang hantle ho FPGA/HLS. Ka mohlala, _ExtInt(7) e hlalosa mofuta o felletseng o nang le li-bits tse 7.
  • Li-macros tse kenyellelitsoeng tse hlalosang tšehetso bakeng sa mesebetsi e hahelletsoeng ka har'a C ho latela litaelo tsa 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. Mohlala, __ARM_FEATURE_SVE macro e hlalosoa ha e hlahisa khoutu ea AArch64 ka ho beha khetho ea mola oa taelo "-march=armv8-a+sve".

  • Folakha ea "-O" e se e khetholloa ka "-O1" mokhoa oa ho ntlafatsa sebakeng sa "-O2".
  • E kentse lifolakha tse ncha tsa komporo:
    • "-fstack-clash-protection" - e nolofalletsa tšireletso khahlanong le mateanong a qubu le qubu.
    • "-ffp-exception-behavior={ignore,maytrap,strict}" - e o fa monyetla wa ho kgetha mokgwa wa motshwari bakeng sa dinomoro tse phaphametseng.
    • "-ffp-model={precise,strict,fast}" - E nolofatsa phihlello ea letoto la likhetho tse ikhethileng bakeng sa linomoro tsa lintlha tse phaphametseng.
    • "-fpch-codegen" le "-fpch-debuginfo" ho hlahisa hlooho e hlophisitsoeng esale pele (PCH) e nang le lifaele tsa ntho e arohaneng bakeng sa khoutu le debuginfo.
    • "-fsanitize-coverage-allowlist" le "-fsanitize-coverage-blocklist" bakeng sa ho lekola tlhahlobo ea manane a masoeu le a matšo.
    • “-mtls-size={12,24,32,48}” ho khetha boholo ba TLS (thread-local storage).
    • "-menable-extension-extension" ho etsa hore liteko tsa RISC-V li atolosoe.
  • Mokhoa oa kamehla oa C ke "-fno-common", o lumellang phihlello e nepahetseng haholoanyane ea mefuta-futa ea lefats'e ho li-platform tse ling.
  • Cache ea kamehla ea module e tlositsoe ho tloha /tmp ho ea ho ~/.cache directory. Ho hlakola, o ka sebelisa "-fmodules-cache-path=" folakha.
  • Tekanyetso ea kamehla ea puo ea C e ntlafalitsoe ho tloha ho gnu11 ho ea ho gnu17.
  • E kenyellelitse tšehetso ea pele bakeng sa katoloso ea GNU C "asm inline»ho kenya lisebelisoa tse kopanyang. Katoloso e ntse e hlahlojoa, empa ha e sebetsoe ka tsela efe kapa efe.
  • Bokhoni bo amanang le tšehetso ea OpenCL le CUDA bo ekelitsoe. Ts'ehetso e ekelitsoeng bakeng sa tlhahlobo ea block ea OpenCL 2.0 le ho kenya tšebetsong likarolo tse ncha tsa OpenMP 5.0.
  • Khetho ea IndentExternBlock e kenyellelitsoeng ho clang-format utility bakeng sa ho hokahanya ka har'a "C" le "C++" ea kantle.
  • The static analyzer e ntlafalitse ho sebetsana le lihahi tse futsitsoeng ho C++. E kentse licheke tse ncha alpha.core.C11Lock le alpha.fuchsia.Lock ho hlahloba linotlolo, alpha.security.cert.pos.34c ho bona ts'ebeliso e sa bolokehang ea putenv, webkit.NoUncountedMemberChecker le webkit.RefCntblBaseVirtualDtor ho lemoha mathata a nang le alpha a sa baloeng. .cplusplus .SmartPtr ho sheba hore na ha ho na tšupiso ea null smart pointer.
  • Ka linter clang-tidy eketsoe karolo e kholo ea licheke tse ncha.
  • Seva ea caching ea clangd (Clang Server) e ntlafalitse ts'ebetso mme e ekelitse bokhoni bo bocha ba tlhahlobo.

ka sehloohong boiqapelo LLVM 11.0:

  • Sistimi ea kaho e fetotsoe ho sebelisa Python 3. Haeba Python 3 e sa fumanehe, hoa khoneha ho khutlela ho sebelisa Python 2.
  • Karolo e ka pele e nang le moqapi oa puo ea Go (llgo) ha e kenyelelitsoe tokollong, e ka hlophisoang nakong e tlang.
  • Sebopeho sa vector-function-abi-variant se kenyellelitsoe ho boemeli ba mahareng (IR) ho hlalosa 'mapa lipakeng tsa mesebetsi ea scalar le vector ho etsa mehala. Ho tsoa ho llvm::VectorType ho na le mefuta e 'meli e arohaneng ea vector llvm::FixedVectorType le llvm::ScalableVectorType.
  • Lekala le ipapisitse le boleng ba udef le ho fetisa boleng ba undef mesebetsing e tloaelehileng ea laeborari ho amoheloa e le boitšoaro bo sa hlalosoang. IN
    memset/memcpy/memmove e lumella ho fetisa lintlha tsa undef, empa haeba paramethara e nang le boholo e le zero.

  • LLJIT e ekelitse ts'ehetso ea ho etsa li-initiatives tse sa fetoheng ka LLJIT :: qala le LLJIT :: mekhoa ea deinitialize. E kentse bokhoni ba ho eketsa lilaebrari tse tsitsitseng ho JITDylib ho sebelisa sehlopha sa StaticLibraryDefinitionGenerator. E kentse C API bakeng sa ORCv2 (API ea ho haha ​​​​li-compilers tsa JIT).
  • Ts'ehetso bakeng sa li-processor tsa Cortex-A64, Cortex-A34, Cortex-A77 le Cortex-X78 e kentsoe mokokotlong oa meralo ea AArch1. Kenyellelitsoe ARMv8.2-BF16 (BFloat16) le ARMv8.6-A katoloso, ho kenyeletsoa RMv8.6-ECV (Enhanced Counter Virtualization), ARMv8.6-FGT (Fine Grained Traps), ARMv8.6-AMU (Activity Monitors virtualization) le ARMv8.0-DGH (Keletso ea ho bokella lintlha). Bokhoni ba ho hlahisa khoutu bakeng sa lits'ebetso tse hahelletsoeng ho latela litaelo tsa vector ea SVE li fanoe.
  • Ts'ehetso bakeng sa li-processor tsa Cortex-M55, Cortex-A77, Cortex-A78 le Cortex-X1 e kentsoe mokokotlong oa meralo ea ARM. Katoloso e kentswe tshebetsong
    Armv8.6-A Matrix Ho atisa le RMv8.2-AA32BF16 BFloat16.

  • Ts'ehetso ea tlhahiso ea khoutu bakeng sa li-processor tsa POWER10 e kenyellelitsoe ka morao bakeng sa meralo ea PowerPC. Lintlafatso tsa loop li ekelitsoe mme tšehetso ea lintlha tse phaphametseng e ntlafalitsoe.
  • Ka morao bakeng sa meralo ea RISC-V e lumella ho amoheloa ha li-patches tse tšehetsang liteko tse atolositsoeng tsa litaelo tse e-s'o amoheloe ka molao.
  • Karolo e ka morao ea meralo ea AVR e tlositsoe ho tloha sehlopheng sa liteko ho ea ho e tsitsitseng, e kenyellelitsoeng kabong ea mantlha.
  • Ka morao bakeng sa meralo ea x86 e tšehetsa litaelo tsa Intel AMX le TSXLDTRK. Tšireletso e ekelitsoeng khahlanong le litlhaselo LVI (Load Value Injection), hape e sebelisa mokhoa o akaretsang oa Speculative Execution Side Effect Suppression ho thibela litlhaselo tse bakoang ke ts'ebetso e inahaneloang ea ts'ebetso ho CPU.
  • Ka morao bakeng sa meralo ea SystemZ, tšehetso ea MemorySanitizer le LeakSanitizer e kentsoe.
  • Ts'ehetso e kenyellelitsoeng bakeng sa faele ea hlooho e nang le lipalo tsa lipalo ho Libc++ .
  • E atolositsoe LLD bokhoni ba ho hokahanya. Ts'ehetso e ntlafalitsoeng bakeng sa sebopeho sa ELF, ho kenyelletsa le likhetho tse ekelitsoeng "--lto-emit-asm", "---whole-program-visibility", "-print-archive-stats", "-shuffle-sections", " -thinlto- single-module", "-ikhethang", "-rosegment", "-threads=N". E kenyellelitsoe "--time-trace" khetho ea ho boloka trace faeleng, e ka hlahlojoang ka chrome://tracing interface ho Chrome.

Source: opennet.ru

Eketsa ka tlhaloso