Itusilẹ ti LLVM 11.0 alakojo suite

Lẹhin osu mẹfa ti idagbasoke gbekalẹ idasilẹ ise agbese LLVM 11.0 - Awọn irinṣẹ ibaramu GCC (awọn olupilẹṣẹ, awọn olupilẹṣẹ ati awọn olupilẹṣẹ koodu), iṣakojọpọ awọn eto sinu bitcode agbedemeji ti RISC-bii awọn ilana foju (ẹrọ foju ipele kekere pẹlu eto imudara ipele pupọ). Pseudocode ti ipilẹṣẹ le ṣe iyipada nipa lilo olupilẹṣẹ JIT sinu awọn ilana ẹrọ taara ni akoko ipaniyan eto.

Awọn bọtini ayipada ninu awọn titun Tu wà ni ifisi ti Egbe, iwaju iwaju fun ede Fortran. Flang ṣe atilẹyin Fortran 2018, OpenMP 4.5 ati OpenACC 3.0, ṣugbọn idagbasoke ti iṣẹ akanṣe ko tii ti pari ati pe opin iwaju ni opin si sisọ koodu ati ṣayẹwo fun atunse. Ipilẹṣẹ koodu agbedemeji LLVM ko ti ni atilẹyin ati lati ṣe ipilẹṣẹ awọn faili ti o ṣee ṣe, koodu canonical ti ṣe ipilẹṣẹ ati kọja si akojọpọ Fortran ita ita.

Awọn ilọsiwaju ni Clang 11.0:

  • Ṣe afikun agbara lati mu pada igi sintasi alafojusi (AST) fun koodu C ++ ti o fọ, eyiti o le ṣee lo lati ṣe iranlọwọ iwadii awọn aṣiṣe ati pese alaye ni afikun si awọn ohun elo ita bii clang-tidy ati clangd. Ẹya naa ti ṣiṣẹ nipasẹ aiyipada fun koodu C ++ ati pe o jẹ iṣakoso nipasẹ awọn aṣayan “-Xclang -f [no-] imularada-ast”.
  • Awọn ọna iwadii tuntun ti a ṣafikun:
    • "-Wpointer-to-int-cast" jẹ ẹgbẹ awọn ikilọ nipa sisọ awọn itọka si oriṣi int odidi kan ti ko gba gbogbo awọn iye to ṣeeṣe.
    • “-Wuninitialized-const-reference” - ikilọ nipa gbigbe awọn oniyipada ti ko ni ipilẹṣẹ ni awọn aye iṣẹ ti o gba awọn ariyanjiyan itọkasi pẹlu “const” abuda.
    • "-Wimplicit-const-int-float-conversion" - ṣiṣẹ nipasẹ ikilọ aiyipada nipa iyipada titọ ti ibakan gidi si iru odidi kan.
  • Fun pẹpẹ ARM, awọn iṣẹ C ti a ṣe sinu akopọ ti pese (Awọn ojulowo), rọpo nipasẹ awọn ilana fekito daradara Arm v8.1-M MVE ati CDE. Awọn iṣẹ ti o wa ni asọye ni awọn faili akọsori arm_mve.h ati arm_cde.h.
  • Fi kun ṣeto ti o gbooro sii odidi orisi _ExtInt (N), gbigba o lati ṣẹda awọn orisi ti o wa ni ko ọpọ ti awọn agbara ti meji, eyi ti o le wa ni ilọsiwaju daradara lori FPGA/HLS. Fun apẹẹrẹ, _ExtInt(7) n ṣalaye iru odidi kan ti o ni awọn ege 7.
  • Awọn macros ti a ṣafikun ti o ṣalaye atilẹyin fun awọn iṣẹ C ti a ṣe sinu ti o da lori ARM SVE (Itẹsiwaju Vector Scalable) awọn ilana:
    __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. Fun apẹẹrẹ, macro __ARM_FEATURE_SVE jẹ asọye nigba ti o ṣe ipilẹṣẹ koodu AArch64 nipa tito aṣayan laini aṣẹ "-march=armv8-a+sve".

  • Asia "-O" ti wa ni idanimọ pẹlu ipo iṣapeye "-O1" dipo "-O2".
  • Ṣafikun awọn asia alakojọ tuntun:
    • "-fstack-clash-protection" - jẹ ki aabo wa lodi si intersections ti akopọ ati òkiti.
    • "-ffp-exception-behavior={foju,maytrap,strict}" - faye gba o lati yan ipo oluṣakoso imukuro fun awọn nọmba aaye lilefoofo.
    • "-ffp-model={precise,strict,fast}" - N jẹ ki iraye si irọrun si oriṣi awọn aṣayan pataki fun awọn nọmba aaye lilefoofo.
    • "-fpch-codegen" ati "-fpch-debuginfo" lati ṣe agbekalẹ akọsori ti a ṣajọ tẹlẹ (PCH) pẹlu awọn faili ohun ti o yatọ fun koodu ati debuginfo.
    • "-fsanitize-coverage-allowlist" ati "-fsanitize-coverage-blocklist" fun ṣiṣe ayẹwo idanwo agbegbe funfun ati awọn akojọ dudu.
    • "-mtls-size={12,24,32,48}" lati yan titobi TLS (ibi ipamọ agbegbe-thread-local).
    • "-menable-experimental-atẹsiwaju" lati jeki esiperimenta RISC-V amugbooro.
  • Ipo aiyipada fun C jẹ "-fno-common", eyiti o fun laaye fun iraye si daradara siwaju sii si awọn oniyipada agbaye lori diẹ ninu awọn iru ẹrọ.
  • A ti gbe kaṣe module aiyipada lati /tmp si ~/.cache directory. Lati fagilee, o le lo asia "-fmodules-cache-path=".
  • Iwọn ede C aiyipada ti ni imudojuiwọn lati gnu11 si gnu17.
  • Ṣe afikun atilẹyin alakoko fun itẹsiwaju GNU C "asm inline»lati fi awọn ifibọ assembler. A tun ṣe atupale itẹsiwaju, ṣugbọn ko ṣe ilana ni eyikeyi ọna.
  • Awọn agbara ti o ni nkan ṣe pẹlu OpenCL ati atilẹyin CUDA ti pọ si. Atilẹyin ti a ṣafikun fun Ṣiṣayẹwo Àkọsílẹ OpenCL 2.0 ati imuse awọn ẹya OpenMP 5.0 tuntun.
  • Aṣayan IndentExternBlock ti a ṣafikun si IwUlO ọna kika idile fun titete laarin “C” ita ati ita “C ++” awọn bulọọki.
  • Oluyanju aimi ti ni ilọsiwaju mimu si awọn oluṣe jogun ni C ++. Ṣafikun awọn sọwedowo tuntun alpha.core.C11Lock ati alpha.fuchsia.Lock lati ṣayẹwo fun awọn titiipa, alpha.security.cert.pos.34c lati ṣe awari lilo ailewu ti putenv, webkit.NoUncountedMemberChecker ati webkit.RefCntblBaseVirtualDtor lati ṣawari awọn iṣoro pẹlu awọn iru ti a ko le ka, alpha. .cplusplus .SmartPtr lati ṣayẹwo fun ifọrọranṣẹ ijuboluwoye asan.
  • Ni linter clang-tidy kun kan ti o tobi ìka ti titun sọwedowo.
  • Olupin caching clangd (Clang Server) ti ni ilọsiwaju iṣẹ ṣiṣe ati ṣafikun awọn agbara iwadii tuntun.

akọkọ awọn imotuntun LLVM 11.0:

  • Eto kikọ naa ti yipada si lilo Python 3. Ti Python 3 ko ba wa, o ṣee ṣe lati yi pada si lilo Python 2.
  • Ipari iwaju pẹlu olupilẹṣẹ fun ede Go (llgo) ko kuro ninu idasilẹ, eyiti o le ṣe atunto ni ọjọ iwaju.
  • Ẹya-ara-iṣẹ-abi-variant ti ṣe afikun si aṣoju agbedemeji (IR) lati ṣe apejuwe aworan agbaye laarin awọn iṣẹ iwọn ati awọn iṣẹ-iṣedede lati vectorize awọn ipe. Lati lvm :: VectorType ni o wa meji lọtọ fekito orisi lvm :: FixedVectorType ati lvm :: ScalableVectorType.
  • Ẹka ti o da lori awọn iye udef ati gbigbe awọn iye ailopin si awọn iṣẹ ikawe boṣewa jẹ idanimọ bi ihuwasi aisọye. IN
    memset/memcpy/memmove ngbanilaaye lati kọja awọn itọka undef, ṣugbọn ti paramita pẹlu iwọn jẹ odo.

  • LLJIT ti ṣafikun atilẹyin fun ṣiṣe awọn ipilẹṣẹ aimi nipasẹ LLJIT :: ipilẹṣẹ ati awọn ọna LLJIT :: deinitialize. Agbara lati ṣafikun awọn ile-ikawe aimi si JITDylib ni lilo kilasi StaticLibraryDefinitionGenerator ti ni imuse. Ti ṣafikun C API fun ORCv2 (API fun kikọ JIT compilers).
  • Atilẹyin fun Cortex-A64, Cortex-A34, Cortex-A77 ati awọn ilana Cortex-X78 ti ṣafikun si ẹhin fun faaji AArch1. ARMv8.2-BF16 ti a ṣe (BFloat16) ati awọn amugbooro ARMv8.6-A, pẹlu RMv8.6-ECV (Imudara Counter Virtualization), ARMv8.6-FGT (Fine Grained Traps), ARMv8.6-AMU (Activity Monitors virtualization) ati ARMv8.0-DGH (Ofiri apejo data). Agbara lati ṣe ipilẹṣẹ koodu fun awọn iṣẹ-itumọ ti awọn ọna asopọ si awọn ilana vector SVE ti pese.
  • Atilẹyin fun Cortex-M55, Cortex-A77, Cortex-A78 ati awọn ilana Cortex-X1 ti ṣafikun si ẹhin fun faaji ARM. Awọn amugbooro imuse
    Armv8.6-A Matrix isodipupo ati RMv8.2-AA32BF16 BFloat16.

  • Atilẹyin fun iran koodu fun awọn ilana POWER10 ti ṣafikun si ẹhin fun faaji PowerPC. Awọn iṣapeye loop ti pọ si ati atilẹyin aaye lilefoofo ti ni ilọsiwaju.
  • Atilẹyin fun faaji RISC-V ngbanilaaye gbigba awọn abulẹ ti o ṣe atilẹyin awọn eto itọnisọna ti o gbooro si idanwo ti ko ti fọwọsi ni ifowosi.
  • Atilẹyin fun faaji AVR ti gbe lati ẹka idanwo si iduroṣinṣin, ti o wa ninu pinpin ipilẹ.
  • Afẹyinti fun faaji x86 ṣe atilẹyin Intel AMX ati awọn ilana TSXLDTRK. Idaabobo ti a ṣafikun lodi si awọn ikọlu LVI (Abẹrẹ Iye Fifuye), ati pe o tun ṣe imuse ẹrọ Imudaniloju Ipa Ipa ipaniyan gbogbogbo lati ṣe idiwọ awọn ikọlu ti o ṣẹlẹ nipasẹ ipaniyan akiyesi ti awọn iṣẹ lori Sipiyu.
  • Ni ẹhin fun faaji SystemZ, atilẹyin fun MemorySanitizer ati LeakSanitizer ti ni afikun.
  • Atilẹyin ti a ṣafikun fun faili akọsori pẹlu awọn iduro mathematiki si Libc++ .
  • Ti fẹ LLD linker awọn agbara. Atilẹyin ilọsiwaju fun ọna kika ELF, pẹlu awọn aṣayan ti a ṣafikun “--lto-emit-asm”, “--lto-all-program-visibility”, “-print-archive-stats”, “-shuffle-sections” -thinlto- ẹyọkan-module", "-oto", "-rosegment", "-threads=N". Ṣe afikun aṣayan "--time-trace" lati ṣafipamọ itọpa naa si faili kan, eyiti o le ṣe atupale nipasẹ wiwo chrome://tracing ni Chrome.

orisun: opennet.ru

Fi ọrọìwòye kun