Fa'asa'olotoina le seti LLVM 11.0 tu'ufa'atasi

Ina ua uma le ono masina o le atinae tuuina atu fa'amatu'u galuega LLVM 11.0 - Meafaigaluega e fetaui ma le GCC (fa'apipi'i, fa'asili ma fa'atupu fa'ailoga), tu'ufa'atasia polokalame i totonu o le bitcode vaeluaga ole RISC-pei o fa'atonuga fa'apitoa (masini fa'atauva'a maualalo fa'atasi ai ma le tele-level optimization system). O le pseudocode gaosia e mafai ona liua e faʻaaoga ai le JIT compiler i faʻatonuga masini i le taimi o le faʻatinoga o polokalame.

O le suiga autu i le faʻasalalauga fou o le faʻaofiina o Itulau, pito i luma mo le gagana Fortran. E lagolagoina e Flang le Fortran 2018, OpenMP 4.5 ma OpenACC 3.0, ae o le atinaʻeina o le poloketi e leʻi maeʻa ma o le pito i luma e faʻatapulaʻa i le faʻavasegaina o le code ma le siakiina o le saʻo. E le'i lagolagoina le fa'atupuina o le code intermediate LLVM ma fa'atupu ai faila e mafai ona fa'atinoina, e fa'atupuina le code canonical ma tu'u atu i se fa'apipi'i mai fafo o Fortran.

Faʻaleleia atili i le Clang 11.0:

  • Faʻaopoopo le tomai e toe faʻafoʻi ai le faʻasologa o le laau (AST) mo le C ++ code gau, lea e mafai ona faʻaaogaina e fesoasoani e faʻamaonia mea sese ma tuʻuina atu faʻamatalaga faaopoopo i mea faʻaoga fafo e pei o le clang-tidy ma clangd. O le faʻaaliga e mafai ona faʻaogaina mo le C ++ code ma e pulea e ala i le "-Xclang -f [no-] toe faʻaleleia-ast" filifiliga.
  • Fa'aopoopo faiga fa'apitoa fou:
    • "-Wpointer-to-int-cast" o se vaega o lapataiga e uiga i le lafoina o faʻailoga i se integer type int e le faʻaogaina uma tulaga taua.
    • "-Wuninitialized-const-reference" - lapata'iga e uiga i le pasia o fesuiaiga e le'i amataina i vaega o galuega e talia ai finauga faʻasino ma le uiga "const".
    • "-Wimplicit-const-int-float-conversion" - fa'atagaina e ala i le fa'aletonu o le lapataiga e uiga i le liua fa'aalia o se fa'amaumau moni i se ituaiga numera.
  • Mo le faʻavae ARM, o loʻo tuʻuina atu galuega C ua fausia i totonu o le tuʻufaʻatasia (Totonu), suia i faatonuga ve'a lelei Arm v8.1-M MVE ma CDE. O galuega o loʻo avanoa o loʻo faʻamatalaina i faila ulutala arm_mve.h ma arm_cde.h.
  • Faʻaliliuga se seti o ituaiga integer lautele _ExtInt(N), e mafai ai ona e fatuina ituaiga e le o ni malosiaga e lua, lea e mafai ona faʻaogaina lelei ile FPGA/HLS. Mo se faʻataʻitaʻiga, _ExtInt(7) fa'amatalaina se ituaiga integer e aofia ai le 7 bits.
  • Fa'aopoopo macros e fa'amatala ai le lagolago mo galuega fa'avae C fa'avae i fa'atonuga 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. Mo se faʻataʻitaʻiga, o le __ARM_FEATURE_SVE macro e faʻamatalaina pe a faʻatupuina le code AArch64 e ala i le setiina o le laina laina filifiliga "-march=armv8-a+sve".

  • O le fu'a "-O" ua iloa nei i le "-O1" optimization mode nai lo le "-O2".
  • Fa'aopoopo fu'a fa'aopoopo fou:
    • "-fstack-clash-protection" - e mafai ai ona puipuia fetaulaiga o faaputuga ma faupu'ega.
    • "-ffp-exception-behavior={ignore,maytrap,strict}" - fa'atagaina oe e filifili le faiga fa'apitoa mo le fa'aogaina o numera fa'afefete.
    • "-ffp-model={precise,strict,fast}" - Fa'afaigofie le avanoa i se fa'asologa o filifiliga fa'apitoa mo numera fa'afefeteina.
    • "-fpch-codegen" ma le "-fpch-debuginfo" e faʻatupu ai se ulutala muamua (PCH) faʻatasi ai ma faila faila eseese mo code ma debuginfo.
    • "-fsanitize-coverage-allowlist" ma le "-fsanitize-coverage-blocklist" mo le siakiina o le inisiua o su'ega pa'epa'e ma le uliuli.
    • “-mtls-size={12,24,32,48}” e filifili le tele o le TLS (thread-local storage).
    • "-menable-experimental-extension" ina ia mafai ai ona fa'aopoopo fa'ata'ita'iga RISC-V.
  • O le fa'aoga masani mo C o le "-fno-common", lea e mafai ai ona sili atu le lelei o avanoa i fesuiaiga o le lalolagi i luga o nisi tulaga.
  • O le fa'aoga fa'aoga fa'aoga ua si'itia mai /tmp i le ~/.cache directory. Ina ia soloia, e mafai ona e faʻaogaina le fuʻa "-fmodules-cache-path=".
  • Ua fa'afou le fa'asologa o le gagana C mai le gnu11 i le gnu17.
  • Faʻaopoopo le lagolago muamua mo le GNU C faʻaopoopoga "asm i totonu»e fa'aopoopo mea fa'apipi'i. O loʻo faʻaauau pea ona suʻesuʻeina le faʻaopoopoga, ae leʻo faʻaogaina i soʻo se auala.
  • O gafatia e fesoʻotaʻi ma OpenCL ma le CUDA lagolago ua faʻalauteleina. Faʻaopoopoina le lagolago mo OpenCL 2.0 poloka faʻataʻitaʻiga ma faʻatino foliga fou OpenMP 5.0.
  • Fa'aopoopoina le filifiliga IndentExternBlock i le fa'aogaina o le fa'aogaina mo le fa'aogaina i totonu o poloka fafo "C" ma fafo "C++".
  • O le suʻesuʻega faʻamautu ua faʻaleleia atili le taulimaina o tagata faufale i le C++. Fa'aopoopo siaki fou alpha.core.C11Lock ma alpha.fuchsia.Lock e siaki ai loka, alpha.security.cert.pos.34c e iloa ai le fa'aogaina le saogalemu o putenv, webkit.NoUncountedMemberChecker ma webkit.RefCntblBaseVirtualDtor e iloa ai fa'afitauli i ituaiga e le mafaitaulia, alpha. .cplusplus .SmartPtr e siaki ai le fa'aituau o le fa'ailoga atamai.
  • I le linter clang-tidy faaopoopo se vaega tele o siaki fou.
  • O le clangd caching server (Clang Server) ua faʻaleleia atili le faʻatinoga ma faʻaopoopoina le mafai gafatia fou.

tele mea fou LLVM 11.0:

  • Ua suia le faiga fau i le fa'aogaina o le Python 3. Afai e le maua le Python 3, e mafai ona toe fo'i i tua ile fa'aogaina ole Python 2.
  • O le pito pito i luma ma le faʻapipiʻi mo le gagana Go (llgo) e le aofia mai le faʻasalalauga, lea e ono toe faʻatulagaina i le lumanaʻi.
  • O le uiga o le vector-function-abi-variant ua fa'aopoopoina i le fa'atusa o le vaeluagalemu (IR) e fa'amatala ai le fa'afanua i le va o le scalar ma le vector functions e fa'aogaina ai telefoni. Mai le llvm ::VectorType e lua ituaiga vete eseese llvm::FixedVectorType ma llvm::ScalableVectorType.
  • O le lalaina e faavae i luga o le udef values ​​ma le pasi atu o tau e le faʻamaonia i galuega masani a le faletusi ua iloa o se amio e leʻi faʻamalamalamaina. IN
    memset/memcpy/memmove e fa'atagaina le pasia o fa'ailoga e le fa'asaoina, ae afai o le parakalafa ma le tele e leai.

  • Ua fa'aopoopoina e le LLJIT le lagolago mo le fa'atinoina o ulua'i fa'ailoga e ala i le LLJIT::initialize ma le LLJIT::deinitialize metotia. Faʻatinoina le mafai e faʻaopoopo faletusi faʻamau i le JITDylib faʻaaoga le vasega StaticLibraryDefinitionGenerator. Fa'aopoopo le C API mo ORCv2 (API mo le fausiaina o JIT compilers).
  • Lagolago mo Cortex-A64, Cortex-A34, Cortex-A77 ma Cortex-X78 processors ua faaopoopo i le pito i tua mo le fausaga AArch1. Faʻatinoina ARMv8.2-BF16 (BFloat16) ma ARMv8.6-A faʻaopoopoga, e aofia ai le RMv8.6-ECV (Enhanced Counter Virtualization), ARMv8.6-FGT (Fine Grained Traps), ARMv8.6-AMU (Activity Monitors virtualization) ma le ARMv8.0-DGH (Fa'ailoga o le aoina o fa'amatalaga). Le mafai ona fa'atupuina fa'ailoga mo galuega fa'apipi'i-fa'asoa i fa'atonuga ve'e SVE ua tu'uina atu.
  • Lagolago mo Cortex-M55, Cortex-A77, Cortex-A78 ma Cortex-X1 processors ua faaopoopo i le pito i tua mo le fausaga o le ARM. Fa'aopoopo fa'atino
    Armv8.6-A Matrix Multiply ma RMv8.2-AA32BF16 BFloat16.

  • Lagolago mo le fa'atupuina o tulafono mo POWER10 processors ua fa'aopoopoina ile pito i tua mo le fausaga o le PowerPC. Ua fa'alauteleina le fa'avasegaina o ta'amilosaga ma ua fa'aleleia atili fo'i le lagolago i luga ole lalaga.
  • O le pito i tua mo le fausaga o le RISC-V e faʻatagaina ai le taliaina o patches e lagolagoina faʻataʻitaʻiga faʻalautele seti faʻatonuga e leʻi faʻatagaina aloaia.
  • O le pito i tua mo le fausaga o le AVR ua faʻafeiloaʻi mai le vaega faʻataʻitaʻi i le faʻamautu, e aofia ai i le tufatufa faʻavae.
  • O le pito i tua mo le fausaga x86 e lagolagoina Intel AMX ma TSXLDTRK faatonuga. Faaopoopo puipuiga mai osofaiga LVI (Load Value Injection), ma faʻatinoina foʻi se faʻataʻitaʻiga lautele o le Speculative Execution Side Effect Suppression mechanism e poloka ai osofaʻiga e mafua mai i le faʻatinoina o gaioiga i luga o le PPU.
  • I le pito i tua mo le SystemZ architecture, lagolago mo MemorySanitizer ma LeakSanitizer ua faʻaopoopoina.
  • Faʻaopoopoina le lagolago mo faila faila faʻatasi ma faʻamautu numera i le Libc++ .
  • Fa'alautele LLD feso'ota'iga agava'a. Faʻaleleia atili le lagolago mo le faʻatulagaga ELF, e aofia ai filifiliga faʻaopoopo "--lto-emit-asm", "--lto-whole-program-visibility", "-print-archive-stats", "-shuffle-sections", " -thinlto- tasi-module", "-tulaga ese", "-rosegment", "- filo = N". Fa'aopoopo le "--time-trace" filifiliga e fa'asaoina ai le fa'ailoga i se faila, ona mafai lea ona su'esu'eina e ala i le chrome://tracing interface i Chrome.

puna: opennet.ru

Faaopoopo i ai se faamatalaga