Itusilẹ ti LLVM 12.0 alakojo suite

Lẹhin oṣu mẹfa ti idagbasoke, itusilẹ ti iṣẹ akanṣe LLVM 12.0 ni a gbekalẹ - ohun elo irinṣẹ ibaramu GCC (awọn olupilẹṣẹ, awọn olupilẹṣẹ ati awọn olupilẹṣẹ koodu) ti o ṣajọ awọn eto sinu bitcode agbedemeji ti RISC-bii awọn ilana foju (ẹrọ foju ipele kekere pẹlu kan olona-ipele ti o dara ju eto). Pseudocode ti ipilẹṣẹ le ṣe iyipada nipa lilo olupilẹṣẹ JIT sinu awọn ilana ẹrọ taara ni akoko ipaniyan eto.

Awọn ilọsiwaju ni Clang 12.0:

  • Atilẹyin fun “o ṣeeṣe” ati “aiṣeeṣe” awọn abuda ti a dabaa ni boṣewa C ++ 20 ti ni imuse ati mu ṣiṣẹ nipasẹ aiyipada, gbigba iṣapeye lati ni alaye nipa iṣeeṣe ti iṣelọpọ ipo ti nfa (fun apẹẹrẹ, “[[o ṣee ṣe). ]] ti (ID> 0) {").
  • Atilẹyin ti a ṣafikun fun AMD Zen 3 (-march = znver3), Intel Alder Lake (-march = alderlake) ati Intel Sapphire Rapids (-march = safhirerapids).
  • Atilẹyin ti a ṣafikun fun “-march = x86-64-v[234]” awọn asia lati yan awọn ipele ile-iṣọ x86-64 (v2 - bo SSE4.2, SSSE3, POPCNT ati awọn amugbooro CMPXCHG16B; v3 - AVX2 ati MOVBE; v4 - AVX-512 ) .
  • Atilẹyin ti a ṣafikun fun Arm Cortex-A78C (cortex-a78c), Arm Cortex-R82 (cortex-r82), Arm Neoverse V1 (neoverse-v1), Arm Neoverse N2 (neoverse-n2) ati awọn ilana Fujitsu A64FX (a64fx). Fun apẹẹrẹ, lati mu awọn iṣapeye ṣiṣẹ fun awọn CPUs Neoverse-V1, o le pato “-mcpu=neoverse-v1”.
  • Fun faaji AArch64, awọn asia alakojọ tuntun "-moutline-atomics" ati "-mno-outline-atomics" ti jẹ afikun lati mu ṣiṣẹ tabi mu awọn iṣẹ oluranlọwọ iṣẹ atomiki ṣiṣẹ, gẹgẹbi "__aarch64_cas8_relax". Iru awọn iṣẹ bẹ rii ni akoko asiko boya atilẹyin LSE (Awọn amugbooro Eto Nla) wa ati lo awọn ilana ero isise atomiki ti a pese tabi ṣubu pada si lilo LL/SC (Load-link/store-conditional) awọn ilana fun imuṣiṣẹpọ.
  • Ṣafikun aṣayan “-fbinutils-version” lati yan ẹya ibi-afẹde ti suite binutils fun ibaramu pẹlu alasopọ agbalagba ati ihuwasi apejọ.
  • Fun awọn faili ṣiṣe ELF, nigbati asia “-gz” ti wa ni pato, funmorawon ti alaye ṣatunṣe nipa lilo ile-ikawe zlib ti ṣiṣẹ nipasẹ aiyipada (gz=zlib). Sisopọ awọn faili ohun abajade nilo ld tabi GNU binutils 2.26+. Lati mu pada ibamu pẹlu awọn ẹya agbalagba ti binutils, o le pato "-gz=zlib-gnu".
  • Itọkasi 'eyi' ti ni ilọsiwaju ni bayi pẹlu awọn sọwedowo aibikita ati aibikita(N). Lati yọ abuda aibikita kuro nigbati o nilo lati lo awọn iye NULL, o le lo aṣayan "-fdelete-null-pointer-checks".
  • Lori pẹpẹ Lainos, ipo “-fasynchronous-unwind-tabili” ti ṣiṣẹ fun AArch64 ati awọn ile-itumọ PowerPC lati ṣe agbekalẹ awọn tabili ipe aifẹ, bii ni GCC.
  • Ni "#pragma clang loop vectorize_width" fikun agbara lati tokasi awọn aṣayan "ti o wa titi" (aiyipada) ati awọn aṣayan "iwọn" lati yan ọna vectorization. Ipo “iwọn”, ominira ti gigun fekito, jẹ esiperimenta ati pe o le ṣee lo lori ohun elo ti o ṣe atilẹyin vectorization ti iwọn.
  • Atilẹyin ilọsiwaju fun Syeed Windows: Awọn apejọ alakomeji osise fun Windows lori awọn ọna ṣiṣe Arm64 ti pese, pẹlu alakojo Clang, LLD linker ati awọn ile-ikawe asiko asiko alakojọ-rt. Nigbati o ba kọ fun awọn iru ẹrọ ibi-afẹde MinGW, suffix .exe ti wa ni afikun, paapaa nigba iṣakojọpọ.
  • Awọn agbara ti o ni nkan ṣe pẹlu atilẹyin fun OpenCL, OpenMP ati CUDA ti ni ilọsiwaju. Awọn aṣayan afikun "-cl-std=CL3.0" ati "-cl-std=CL1.0" lati yan awọn aṣayan macro fun OpenCL 3.0 ati OpenCL 1.0. Awọn irinṣẹ iwadii ti pọ si.
  • Atilẹyin ti a ṣafikun fun HRESET, UINTR, ati awọn ilana AVXVNNI ti a ṣe imuse ni diẹ ninu awọn ilana orisun-x86.
  • Lori awọn ọna ṣiṣe x86, atilẹyin fun aṣayan "-mtune = " ti ṣiṣẹ ", eyiti o mu awọn iṣapeye microarchitectural ti a yan ṣiṣẹ, laibikita iye ti "-march= "
  • Oluyanju aimi ti ni ilọsiwaju sisẹ ti diẹ ninu awọn iṣẹ POSIX ati ipinnu ilọsiwaju ni pataki ti abajade ti awọn iṣẹ iṣe ipo nigbati awọn iye aami pupọ wa ninu lafiwe. A ti ṣafikun awọn sọwedowo tuntun: fuchia.HandleChecker (ṣe alaye awọn imudani ni awọn ẹya), webkit.UncountedLambdaCapturesChecker webkit ati alpha.webkit.UncountedLocalVarsChecker (ṣe akiyesi awọn ẹya pataki ti ṣiṣẹ pẹlu awọn itọka ninu koodu engine WebKit).
  • Ninu awọn ọrọ ti a lo ni ipo ti awọn iduro, lilo awọn iṣẹ ti a ṣe sinu __builtin_bitreverse *, __builtin_rotateleft*, __builtin_rotateright*, _mm_popcnt*, _bit_scan_forward, __bsfd, __bsfq, __bit__scan_reverse, bspqrd, bspqd 64, ti wa ni idasilẹ.__bswapq , _castf *, __rol* ati __ror*.
  • Ṣafikun aṣayan BitFieldColonSpacing si IwUlO ọna kika clang lati yan aye ni ayika awọn idamọ, awọn ọwọn, ati awọn itumọ aaye.
  • Olupin caching clangd (Clang Server) lori pẹpẹ Linux ti dinku agbara iranti ni pataki lakoko iṣẹ igba pipẹ (awọn ipe igbakọọkan si malloc_trim ni a pese lati da awọn oju-iwe iranti ọfẹ pada si ẹrọ iṣẹ).

Awọn imotuntun bọtini ni LLVM 12.0:

  • Atilẹyin fun ohun elo kikọ lvm-build ti a kọ sinu Python ti dawọ duro, ati dipo iṣẹ akanṣe ti yipada patapata si lilo eto Kọ CMake.
  • Ni ẹhin ẹhin fun faaji AArch64, atilẹyin fun Syeed Windows ti ni ilọsiwaju: iran ti o pe ti iṣelọpọ apejọ fun awọn eto Windows ti a ti ni idaniloju, iran ti data lori awọn ipe aifẹ ti jẹ iṣapeye (iwọn iru data ti dinku nipasẹ 60 %), agbara lati ṣẹda data aifẹ nipa lilo assembler ti ni afikun awọn itọsọna .seh_*.
  • Igbẹhin fun faaji PowerPC ṣe ẹya awọn iṣapeye tuntun fun awọn losiwajulosehin ati imuṣiṣẹ inline, atilẹyin ti o gbooro fun awọn ilana Power10, atilẹyin afikun fun awọn ilana MMA fun ifọwọyi matrix, ati atilẹyin ilọsiwaju fun ẹrọ ṣiṣe AIX.
  • Atilẹyin x86 ṣe afikun atilẹyin fun AMD Zen 3, Intel Alder Lake ati awọn olutọpa Intel Sapphire Rapids, ati awọn ilana ilana HRESET, UINTR ati AVXVNNI. Atilẹyin fun MPX (Awọn amugbooro Idaabobo Iranti) fun ayẹwo awọn itọka lati rii daju pe awọn aala iranti ko ni atilẹyin (imọ-ẹrọ yii ko ni ibigbogbo ati pe o ti yọkuro tẹlẹ lati GCC ati idile). Ṣe afikun atilẹyin si apejọ fun {disp32} ati {disp8} awọn ami-iṣaaju ati .d32 ati .d8 suffixes lati ṣakoso iwọn awọn aiṣedeede operand ati awọn fo. Ṣafikun abuda tuntun “tune-cpu” lati ṣakoso ifisi ti awọn iṣapeye microarchitectural.
  • Ipò tuntun “-fsanitize=unsigned-shift-base” ti jẹ́ àfikún sí olùṣàwárí ìṣòro odidi (integer sanitizer, “-fsanitize=integer”) láti ṣàwárí àkúnwọ́sílẹ̀ àwọn òǹkà àìfọwọ́sí lẹ́yìn yíyí díẹ̀ sí òsì.
  • Ni ọpọlọpọ awọn aṣawari (asan, cfi, lsan, msan, tsan, ubsan sanitizer) atilẹyin fun awọn pinpin Lainos pẹlu ibi-ikawe Musl boṣewa ti ni afikun.
  • Awọn agbara ti ọna asopọ LLD ti pọ si. Atilẹyin ilọsiwaju fun ọna kika ELF, pẹlu awọn aṣayan ti a ṣafikun “--faili-igbẹkẹle”, “-error-handling-script”, “-lto-pseudo-probe-for-profiling”, “-no-lto-gbogbo-eto -visibility" Imudara atilẹyin MinGW. Fun ọna kika Mach-O (macOS), atilẹyin fun arm64, apa, ati awọn ile-itumọ i386, awọn iṣapeye akoko-ọna asopọ (LTO), ati ṣiṣi silẹ akopọ fun mimu iyasọtọ ti ni imuse.
  • Libc++ n ṣe awọn ẹya tuntun ti boṣewa C ++20 ati pe o ti bẹrẹ idagbasoke awọn ẹya ti sipesifikesonu C ++ 2b. Atilẹyin ti a ṣafikun fun kikọ pẹlu piparẹ atilẹyin isọdibilẹ (“-DLIBCXX_ENABLE_LOCALIZATION=PA”) ati awọn ẹrọ fun ṣiṣẹda awọn nọmba airotẹlẹ (“-DLIBCXX_ENABLE_RANDOM_DEVICE=PA”).

orisun: opennet.ru

Fi ọrọìwòye kun