Dimittis de LLVM 11.0 compilator suite

Post sex menses evolutionis presented project emissio LLVM 11.0 - GCC instrumenta compatibles (compilatores, optimizers et codicem generantium), componendo programmata in bitcode intermedia de RISC-similis instructionum virtualium (machina virtualis low-gradu cum multi-gradu optimizationis systematis). Pseudocode generatum converti potest utens compilator JIT in instructiones machinae directe tempore programma executionis.

Clavis mutatio in nova emissione fuit inclusio Laterapro fortrana lingua frontend. Flang sustinet Fortran 2018, OpenMP 4.5 et OpenACC 3.0, sed explicatio propositi nondum completa et finis anterior ad partem codicis et ad rectitudinem reprimendam limitatur. Generatio LLVM Codicis intermedii nondum sustinetur et ad generandum files exsecutabile, codice canonico generatur et ad externum Fortran compilator transiit.

Aliquam in Clang 11.0:

  • Facultatem ad syntaxin abstractam ad restaurationem arboris (AST) pro fracto C++ codice, qui ad errores diagnoseos adiuvandos ac informationes externas utilitates praebet ut soni luculentam et clangorem praebet. Pluma per defaltam pro C++ codice efficax est ac per "-Xclang -f[-f-] recuperatio-ast" bene regitur.
  • Novos diagnostic modos addidit:
    • "-Wpointer-ad-int-cast" est coetus admonitionum de indicibus proiciendi ad genus integrum int quod non omnes valores possibiles accommodans.
    • "Wuninitialized-const-reference" - monitum de transeundo variabilium variabilium in functionibus parametris quae referentias rationes cum attributo "const" accipiunt.
    • "-Wimplicit-const-int-float-conversionem" - per default monitionem de implicita conversione verae constantis ad integrum genus.
  • Pro tribunali ARM, C munera in compilator aedificata providentur (Intrinsics) , substituti per instructiones efficientes vectoris Arm v8.1-M MVE et CDE. Munera praesto sunt definita in lima capitis arm_mve.h et arm_cde.h.
  • adiecit in typos integros extensorum statuto _ExtInt(N), permittens creare rationes non multiplices potentiarum duarum, quae efficaciter in FPGA/HLS discursum esse possunt. exempli gratia, _ExtInt(7) genus integrum definit ex 7 bits constans.
  • Macras additae quae definiunt sustentationem in C functionibus constructis in ARM SVE fundatis (Scalable Vector Extensio) instructiones:
    __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. Exempli gratia, tortor __ARM_FEATURE_SVE definitur cum codicem AArch64 generans optio recta imperandi "-march=armv8-a+sve" definitur.

  • Vexillum "-O" nunc cum "-O1" optimizationis modo pro "-O2" identificatum est.
  • Addidit nova vexilla compilator:
    • "-fstack-concursus tutela" - dat tutelam contra intersectiones ACERVUS et acervus.
    • "-ffp-exception-morum={ignorare,maytrap, stricte}" - sino te eligere modum exceptionis tracto pro numero punctorum fluctuantium.
    • "-ffp-model={precisum,stricte,celeriter}" - Simplificat accessum ad seriem optionum specialium specialium pro numero punctorum fluentium.
    • "-fpch-codegen" et "-fpch-debuginfo" generare precompiled header (PCH) cum obiectis separatis pro codice et debuginfo.
    • "-fsanitize-coverage-allowlist" et "-fsanitize-coverage-blocklist" pro recognitione coverage probat album et nigrum album.
    • "-mtls-size={12,24,32,48}" eligere TLS (repositorium loci) magnitudine.
    • "-menable-experimentalem extensionem" ad enable extensiones experimentales RISC-V.
  • Modus defaltus pro C est "-fno-communis", qui permittit ut efficacius aditus ad global variabiles in quibusdam suggestis.
  • Cache modulus default de /tmp ad ~/.cache directorium remotus est. Ad delendum, uti potes "-fmodules-cache-via" vexillum.
  • Defectus C vexillum lingua ab gnu11 ad gnu17 renovatum est.
  • GNU C extensio subsidium praeliminarium addidit "hibitisque inlineΒ» addere assembler interserit. Extensio adhuc resolvitur, sed nullo modo discursum est.
  • Facultates cum OpenCL et CUDA subsidio auctae sunt. Adiecta subsidia pro OpenCL 2.0 diagnostica scandali et novas lineamenta OpenMP 5.0 implenda.
  • Addidit IndentExternBlock optionem ad utilitatem clang-formam ad alignment intra "C" extra et "C++" cuneos.
  • Stabilis analystor hereditarium conditorum tractationem emendavit in C++. Novas compescit alpha.core.C11Lock adiecit et alpha.fuchsia.Lock ad reprimendam cincinnos, alpha.security.cert.pos.34c usum putenv deprehendere tutum, webkit.NoUncountedMemberChecker et webkit.RefCntblBaseVirtualDtor ad deprehendendas difficultates cum innumerabilibus generibus, alpha .cplusplus .SmartPtr ad reprimendam nullum calliditatis regulam dereference.
  • In linter clang-digma additae magna portio coercet.
  • Clangd caching server (Clang Server) effectus melius emendavit et novas facultates diagnosticas addidit.

Main innovations LLVM 11.0;

  • Ratio aedificandi ad Pythonem adhibita est 3. Si Python 3 praesto non est, Pythone 2 utendo reverti potest.
  • Finis anterior cum compilator pro lingua Go (llgo) excluditur a emissione, quae in futuro restructura est.
  • Vector-munus-abi-varians attributum additum est repraesentationi intermediae (IR) ad describendas functiones destinativas inter scalares et vector ad vectorize vocat. Ab llvm ::VectorType duo genera vectoris llvm::FixedVectorType et llvm::ScalableVectorType sunt.
  • Discurrentes in udef valoribus et indef valores transeuntes ad normas bibliothecae functionum secundum mores indefinitos agnoscitur. IN'
    memset/memcpy/memmovere transitum undef indicibus permittit, at si modulus cum magnitudine nulla est.

  • LLJIT subsidia addidit ad initializationes statas faciendos per LLJIT :: inchoare et LLJIT:: devenire modos. Facultas static bibliothecas ad JITDylib addendi ordinis StaticLibrary DefinitionisGeneratoris classis ad effectum adduxit. Addidit C API for ORCv2 (API ad aedificationem JIT compilatores).
  • Firmamentum pro Cortex-A64, Cortex-A34, Cortex-A77 et Cortex-X78 processors ad tergum pro architectura AArch1 additum est. ARMv8.2-BF16 (BFloat16) et ARMv8.6-A extensiones, e quibus RMv8.6-ECV (Consectetur Virtualisation Contra), ARMv8.6-FGT (Fine Grained Traps), ARMv8.6-AMU (Activitas Monitores virtualizationis) and ARMv8.0-DGH (Indiciorum notitia collectio). Facultas ad codicem generandi in functionibus ligaturae ad instructiones SVE vectoris aedificandas provisa est.
  • Firmamentum pro Cortex-M55, Cortex-A77, Cortex-A78 et Cortex-X1 processors ad tergum pro ARMI architectura additum est. Extensiones implemented
    Armv8.6-A Matrix Multiplica et RMv8.2-AA32BF16 BFloat16.

  • Firmamentum pro codice generationis pro processoribus POWER10 addita est ad tergum pro architectura PowerPC. Loop optimizationes auctae sunt et punctum fluitantis subsidii auctum est.
  • Tergum in architectura RISC-V acceptionem inaequaliter permittit, qui experimentalem institutionis extensam subsidia proponit, quae nondum publice approbata est.
  • Dorsum pro architectura AVR translatum est a categoria experimentali ad stabilitatem, in distributione fundamentali comprehensa.
  • Subscriptio architecturae x86 sustinet instructiones Intel AMX et TSXLDTRK. Additum praesidium contra impetus Iustinianus Codex (Valorem oneris Iniectio), et etiam generalem exsecutionem speculativam Exsecutio Side Effectum suppressionis mechanismum ad impedimenta oppugnationum quae per speculativam operationum in CPU exsecutionem causatur.
  • In architectura SystemZ backend, subsidium MemorySanitizer et LeakSanitizer adiectum est.
  • Addidit subsidium fasciculi header cum constantibus mathematicis ad Libc ++ .
  • Expanded LLD linker excedunt. Auxilia emendata pro forma ELF, inter additas optiones "-lto-emit-asm", "-lt-toto-visibilitas", "archive-stats", "-shuffle-sections", -thinlto- modulus singularis, "-unique", "rosegment", "-threads=N". Addidit optio "--time-trace" ut vestigium servandi lima, quae tunc per chrome://tractionis interfaciei in Chrome enucleari potest.

Source: opennet.ru