Sakin saitin mai tarawa na LLVM 12.0

Bayan watanni shida na haɓakawa, an gabatar da ƙaddamar da aikin LLVM 12.0 - kayan aikin GCC mai jituwa (masu haɗawa, masu haɓakawa da janareta na lamba) waɗanda ke tattara shirye-shirye cikin matsakaicin bitcode na RISC-kamar umarnin kama-da-wane (ƙananan injin kama-da-wane tare da Multi-matakin inganta tsarin). Za'a iya canza lambar ƙirar ƙira ta amfani da mai tara JIT zuwa umarnin injin kai tsaye a lokacin aiwatar da shirin.

Haɓakawa a cikin Clang 12.0:

  • An aiwatar da goyan bayan sifofin "mai yiwuwa" da "marasa yiwuwa" da aka tsara a cikin ma'aunin C ++20 kuma an kunna su ta tsohuwa, yana ba da damar sanar da mai ingantawa game da yuwuwar ginin yanayin da aka kunna (misali, "[[wataƙila) ]] idan (bazuwar> 0) {").
  • Ƙara goyon baya ga AMD Zen 3 (-march = znver3), Intel Alder Lake (-march = alderlake) da Intel Sapphire Rapids (-march = sapphirapids).
  • Ƙara goyon baya don "-march = x86-64-v[234]" tutoci don zaɓar matakan gine-gine x86-64 (v2 - ya rufe SSE4.2, SSSE3, POPCNT da CMPXCHG16B kari; v3 - AVX2 da MOVBE; v4 - AVX-512 ) .
  • Ƙara goyon baya ga Arm Cortex-A78C (cortex-a78c), Arm Cortex-R82 (cortex-r82), Arm Neoverse V1 (neoverse-v1), Arm Neoverse N2 (neoverse-n2) da Fujitsu A64FX (a64fx). Misali, don ba da damar ingantawa don Neoverse-V1 CPUs, zaku iya tantance “-mcpu=neoverse-v1”.
  • Don gine-ginen AArch64, sabbin tutocin masu tarawa "-moutline-atomics" da "-mno-outline-atomics" an ƙara su don kunna ko kashe ayyukan taimakon atomic, kamar "__aarch64_cas8_relax". Irin waɗannan ayyuka suna gano a lokacin aiki ko akwai tallafin LSE (Large System Extensions) kuma a yi amfani da umarnin sarrafa atomic da aka bayar ko faɗuwa ga yin amfani da umarnin LL/SC (Load-link/store-conditional) umarni don aiki tare.
  • Ƙara wani zaɓi na "-fbinutils-version" don zaɓar sigar manufa ta binutils suite don dacewa tare da tsofaffin mahaɗa da halayen masu tarawa.
  • Don fayilolin da za a iya aiwatar da ELF, lokacin da aka ayyana tutar "-gz", ana kunna matse bayanan gyara ta amfani da ɗakin karatu na zlib ta tsohuwa (gz=zlib). Haɗa fayilolin abu da aka samu yana buƙatar ld ko GNU binutils 2.26+. Don dawo da jituwa tare da tsofaffin nau'ikan binutils, zaku iya saka "-gz=zlib-gnu".
  • Yanzu ana sarrafa ma'anar 'wannan' tare da cak ɗin mara lalacewa (N). Don cire sifa mara tushe lokacin da kuke buƙatar amfani da ƙimar NULL, kuna iya amfani da zaɓin "-fdelete-null-pointer-checks".
  • A kan dandalin Linux, an kunna yanayin "-fasynchronous-unwind-tables" don gine-ginen AArch64 da PowerPC don samar da allunan kira, kamar a GCC.
  • A cikin "#pragma clang loop vectorize_width" an ƙara da ikon tantance zaɓuɓɓukan "fixed" (default) da "scalable" don zaɓar hanyar vectorization. Yanayin "mai daidaitawa", mai zaman kansa daga tsayin vector, gwaji ne kuma ana iya amfani da shi akan kayan aikin da ke goyan bayan sikelin vectorization.
  • Ingantattun tallafi don dandalin Windows: An shirya tarukan binaryar hukuma don Windows akan tsarin Arm64, gami da mai tara Clang, LLD linker da ɗakunan karatu na lokaci-lokaci. Lokacin gina dandamali don dandamali na MinGW, ana ƙara suffix .exe, koda lokacin haɗawa.
  • An faɗaɗa damar damar da ke da alaƙa da tallafi don OpenCL, OpenMP da CUDA. Zaɓuɓɓukan da aka ƙara "-cl-std=CL3.0" da "-cl-std=CL1.0" don zaɓar zaɓuɓɓukan macro don OpenCL 3.0 da OpenCL 1.0. An fadada kayan aikin bincike.
  • Ƙarin tallafi don umarnin HRESET, UINTR, da AVXVNNI waɗanda aka aiwatar a cikin wasu na'urori na tushen x86.
  • A kan tsarin x86, an kunna goyan bayan zaɓin "-mtune=" ", wanda ke kunna zaɓaɓɓen ingantaccen haɓakawa na microarchitectural, ba tare da la'akari da ƙimar "-march= "
  • Mai nazari a tsaye ya inganta sarrafa wasu ayyuka na POSIX kuma ya inganta ingantaccen sakamakon sakamakon ayyuka na yanayi lokacin da akwai ƙima masu yawa a cikin kwatancen. An ƙara sabbin cak: fuchia.HandleChecker (yana bayyana iyawa a cikin tsari), webkit.UncountedLambdaCapturesChecker webkit da alpha.webkit.UncountedLocalVarsChecker (yana la'akari da fa'idodin aiki tare da masu nuni a cikin lambar injin WebKit).
  • A cikin maganganun da aka yi amfani da su a cikin mahallin akai-akai, yin amfani da ayyukan da aka gina __builtin_bitreverse*, __builtin_rotateleft*, __builtin_rotateright*, _mm_popcnt*, _bit_scan_forward, __bsfd, __bsfq, __bit__scan_reverse, bswap, bspd, bswap 64, an yarda. __bswapq , _castf*, __rol* da __ror*.
  • Ƙara wani zaɓi na BitFieldColonSpacing zuwa tsarin tsarin dangi don zaɓar tazara a kusa da masu ganowa, ginshiƙai, da ma'anar filin.
  • Sabar caching na clangd (Clang Server) akan dandamalin Linux ya rage yawan ƙwaƙwalwar ajiya yayin aiki na dogon lokaci (ana ba da kiran lokaci-lokaci zuwa malloc_trim don dawo da shafukan ƙwaƙwalwar ajiya kyauta zuwa tsarin aiki).

Mabuɗin sabbin abubuwa a cikin LLVM 12.0:

  • Tallafin kayan aikin gini na lvm-build da aka rubuta a cikin Python ya ƙare, kuma a maimakon haka aikin ya koma gaba ɗaya zuwa amfani da tsarin ginin CMake.
  • A cikin bangon baya don gine-ginen AArch64, an inganta goyan bayan dandamali na Windows: an tabbatar da samar da ingantaccen kayan aikin masu tarawa don tsarin Windows da aka yi niyya, an inganta haɓakar ƙirƙira kan kiran da ba a buɗe ba (an rage girman irin waɗannan bayanan da 60). %), ikon ƙirƙirar bayanan cirewa ta amfani da assembler an ƙara umarnin umarni .seh_*.
  • Ƙididdiga na gine-gine na PowerPC yana da sababbin haɓakawa don madaukai da ƙaddamar da layi, fadada goyon baya ga masu sarrafawa na Power10, ƙarin goyon baya ga umarnin MMA don magudin matrix, da ingantaccen tallafi ga tsarin aiki na AIX.
  • Bayan x86 yana ƙara goyan baya ga AMD Zen 3, Intel Alder Lake da Intel Sapphire Rapids na'urori masu sarrafawa, da kuma umarnin sarrafawa na HRESET, UINTR da AVXVNNI. Taimako ga MPX (Kariyar Kariyar Memory) don bincika masu nuni don tabbatar da cewa ba a tallafawa iyakokin ƙwaƙwalwar ajiya (wannan fasaha ba ta yaɗu ba kuma an riga an cire shi daga GCC da dangi). Ƙara goyon baya ga mai tarawa don {disp32} da {disp8} prefixes da .d32 da .d8 suffixes don sarrafa girman operand offsets da tsalle. An ƙara sabon sifa "tune-cpu" don sarrafa haɗa abubuwan ingantawa na microarchitectural.
  • An ƙara sabon yanayin "-fsanitize=unsigned-shift-base" zuwa ga mai gano matsala na lamba (integer sanitizer, "-fsanitize=integer") don gano cunkoson lambobin da ba a sanya hannu ba bayan ɗan matsawa zuwa hagu.
  • A cikin na'urori daban-daban (asan, cfi, lsan, msan, tsan, ubsan sanitizer) an ƙara tallafi don rarraba Linux tare da daidaitaccen ɗakin karatu na Musl.
  • An faɗaɗa iyawar mai haɗin LLD. Ingantattun tallafi don tsarin ELF, gami da ƙarin zaɓuɓɓukan "--dogara-fayil", "-error-handling-script", "-lto-pseudo-bincike-for-profiling", "-no-lto-dukan-shirin". -gani"" Ingantattun tallafin MinGW. Don tsarin Mach-O (macOS), goyan bayan gine-ginen arm64, hannu, da i386, haɓakawa lokaci-lokaci (LTO), da tari don ban sha'awa an aiwatar da su.
  • Libc++ yana aiwatar da sabbin fasalulluka na ma'aunin C++20 kuma ya fara haɓaka fasalulluka na ƙayyadaddun C++2b. Ƙara goyon baya don ginawa tare da kashe goyan bayan gida ("-DLIBCXX_ENABLE_LOCALIZATION=KASHE") da na'urori don samar da lambobin bazuwar ("-DLIBCXX_ENABLE_RANDOM_DEVICE=KASHE").

source: budenet.ru

Add a comment