Dimittis de LLVM 12.0 compilator suite

Post sex menses evolutionis, emissio LLVM 12.0 propositi exhibita est - instrumentum instrumenti GCC compatibile (compilatores, optimizers et codicem generantium) qui programmata componit in bitcode mediae instructionis RISC-similis virtualis (machinae virtualis humili cum gradu. multi-gradu optimization systema). Pseudocode generatum converti potest utens compilator JIT in instructiones machinae directe tempore programma executionis.

Emendationes in Clang 12.0:

  • Firmamentum "verisimile" et "insimile" attributa quae in C++20 vexillum proposita sunt, per defaltam ad effectum adducta est, permittens optimizer informari de probabilitate constructionis conditionalis Urguet (exempli gratia "[[verisimile ]] if (rare >0) {β€œ).
  • Auxilia addita pro Intel Pentium III (-march=znver3), Intel Lacus Alderlake (-march=alderlake) et Sapphirus Rapids Intel (-march=sapphirerapidas) processores.
  • Adiecta subsidia pro "-march=x86-64-v[234]" vexilla ad gradus architecturae x86-64 eligendos (v2 - operit SSE4.2, SSSE3, POPCNT et CMPXCHG16B extensiones; v3 - AVX2 et MOVBE; v4 - AVX-512 ) .
  • Brachium cortex-A78C (cortex-a78c), brachium Cortex-R82 (cortex-r82), brachium neoverse V1 (neoverse-v1), brachium neoverse N2 (neoverse-n2) et processors Fujitsu A64FX (a64fx). Exempli gratia, optimizations pro Neoverse-V1 CPUs, specificare potes "-mcpu=neverso-v1".
  • Ad architecturae AArch64, nova vexilla "-moutline-atomica" et "-mno-linea-atomica" additae sunt ut operationes atomicae adiuvantis functiones efficere vel disable, ut "aarch64_cas8_relaxant". Tales functiones in runtime deprehendere num LSE (Large System Extensions) subsidium praesto sit et utere instructiones processus atomici, vel recidere ad LL/SC (Load-link/stor-conditionales) instructiones ad synchronizationem.
  • Adiecit "-fbinutils-versio" optionem seligere scopo versionis binutilium consentaneorum ad convenientiam cum moribus vetustioribus ligatoris et coadunatoris.
  • Pro files exsecutabile ELF, cum vexillum "-gz" specificatur, pressio debugging informationis utens bibliothecae zlib per defaltam potest (gz=zlib). Fasciculi coniunctio objecti indefiniti lld vel GNU binutilia 2.26+ requirit. Ad convenientiam cum vetustioribus binutillis versionibus restituendis, exprimere potes "-gz=zlib-gnu".
  • Haec regula nunc cum nonnullis et dereferenceable(N) processit. Ad attributum nonnullum tollendum cum valoribus nullis uti debes, optione "-fdelete-nulli-monstroris" uti potes.
  • In suggestu Linux, "-fasynchronous-mensurae" modus potest pro AArch64 et PowerPC architecturae ad explicandas tabulas vocatas distentas generare, sicut in GCC.
  • In "#pragma clang loop vectorize_width" addidit facultatem specificandi "fixum" (default) et "scalabile" optiones ad modum vectorizationis eligendi. Modus "scalabilis", longitudinis vectoris independentis, experimentalis est et adhiberi potest in ferramentis quae vectorizationem scalabilem sustinet.
  • Improved support for the Windows platform: Official binarii conventus pro Fenestra in Arm64 systemata parata sunt, incluso Clang compilator, LLD linker et compilator bibliothecae runtime. Cum ad tabulas scopo MinGW aedificandas, .exe suffixo additur, etiam cum transversis compilandis.
  • Facultates subsidiariae coniunctae pro OpenCL, OpenMP et CUDA dilatatae sunt. Optiones addidit "-cl-std=CL3.0" et "-cl-std=CL1.0" eligere optiones macro pro OpenCL 3.0 et OpenCL 1.0. Instrumenta diagnostica amplificata sunt.
  • Auxilia additae sunt HRESET, UINTR, AVXVNNI instructiones in processibus quibusdam x86 fundatis effectae.
  • In systematis x86, subsidium pro "-mtune" optio datur ", qui delectos optimizationes microarchitecturales, cuiuscumque valoris "-marcae", operatur. "
  • analystor staticus processus aliquorum POSIX functionum emendavit et signanter melioravit determinationem effectus operationum conditionalium cum plures valores symbolici in comparatione sunt. Novae sculptiones additae sunt: ​​fuchia.HandleChecker (mansiones in structuris definit), webkit.UncountedLambdaCapturesChecker webkit et alpha.webkit.UncountedLocalVarsChecker (in consideratione peculiarium operandi cum indicibus in codice machinae WebKit).
  • In expressions used in the context of constants, the use of built-in functions __builtin_bitreverse*, __builtin_rotateleft*, __builtin_rotateright*, _mm_popcnt*, _bit_scan_forward, __bsfd, __bsfq, __bit_scan_reverse, __bsrd, __bsrq, __bswap, __bswapd, __bswap64, is allowed. __bswapq , _castf*, __rol* et __ror*.
  • BitFieldColonSpacing optionem ad usum formarum sonorum ad eligendum spatia circum identificatores, columnas et definitiones agri.
  • Clangd caching server (Clang Server) in suggestu Linux memoriam consummationis in operatione diuturna signanter redegit (vocata periodica ad malloc_trim sunt, ut liberae memoriae paginae ad systema operantem referant).

Clavis rerum novarum in LLVM 12.0:

  • Support pro instrumento aedificandi aedificandi in Pythone scriptum discontinuatum est, et pro hoc propositum omnino switched ad systema aedificandi CMake utendum.
  • In architectura posteriori pro AArch64, firmamentum pro suggestu Fenestrarum emendato: recta generatio collectionis output pro rationum scopo Fenestra conservata est, generatio notitiarum in solutis vocatis optimized est (magnitudo talium notitiarum per 60 redacta est. %), facultas data utendi globulus creare solvens normas .seh_* addita est.
  • Ad tergum PowerPC architecturae notae novae optimizations pro ansulis et inlineis instruendis, subsidia pro processoribus Power10 ampliata, subsidia pro MMA instructionibus matricis manipulationis additae, et pro AIX systemate operante meliore sustentantur.
  • X86 backend adiungit subsidium pro AMD Zen 3, Intel Lacus Alder et Sapphirus Rapids Intel processores, nec non HRESET, UINTR et AVXVNNI instructiones processus. Firmamentum MPX (Memoria Praesidium Tractus) pro indicibus reprimendis ut limites memoriae curandae non amplius sustineantur (haec technologia non est disseminata et iam a GCC et clangore remota est). Auxilia collecta pro {disp32} et {disp8} praefixis ac .d32 et .d8 suffixis additis ad magnitudinem operandi exsertiones et saltationes moderandas. Novum attributum "tune-cpu" addidit ad inclusionem optimizationum microarchitecturae temperandam.
  • Novus modus "-fsanitize=unsigned-shift-basis" additus est ad problema integrum detectoris (integri sanitizer, "-fsanitize=integri") ad detegendas redundationes integrorum non ignari post aliquantulum transpositio ad sinistram.
  • In variis detectoribus (asan, cfi, lsan, msan, tsan, ubsan sanitizer) subsidia distributionum Linux cum bibliotheca vexillum Musl adiectum est.
  • Facultates ligatoris LLD dilatatae sunt. Auxilia emendata pro forma ELF, inter additae optiones "-dependentiae fasciculi", erroris tractandi scripturam, "lto pseudo-probandi pro-profiling", "no-lto totius programmatis -visibility" " Improved MinGW auxilium. Pro forma Mach-O (macOS), subsidium pro arm64, bracchio, et i386 architecturae, optimizationes nexus temporis (LTO), et acervus explicans ad tractationem exceptionis perducta est.
  • Libc ++ nova lineamenta vexilli C++20 exercens et progressio linearum C++2b speciei incepit. Addidit subsidium aedificationis localizationis subsidio inactivare ("-DLIBCXX_ENABLE_LOCALIZATION=OFF") et machinas ad numeros pseudo-passim generandos ("-DLIBCXX_ENABLE_RANDOM_DEVICE=OFF").

Source: opennet.ru