Sakin saitin mai tarawa na LLVM 15.0

Bayan watanni shida na haɓakawa, an gabatar da ƙaddamar da aikin LLVM 15.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.

Babban haɓakawa a cikin Clang 15.0:

  • Don tsarin da ya danganci gine-ginen x86, an ƙara alamar "-fzero-call-used-regs", wanda ke tabbatar da cewa duk rajistar CPU da aka yi amfani da su a cikin aikin an sake saita su zuwa sifili kafin dawo da sarrafawa daga aikin. Wannan zaɓin yana ba ku damar kariya daga ɗigon bayanai daga ayyuka da rage adadin tubalan da suka dace don gina na'urori na ROP (Return-Oriented Programming) a cikin fa'ida da kusan 20%.
  • An aiwatar da bazuwar wurin ajiyar ƙwaƙwalwar ajiya na tsarin don lambar C, wanda ke rikitar da fitar da bayanai daga tsarin a yayin da ake amfani da rauni. Ana kunna da kashe bazuwar ta amfani da randomize_layout kuma babu_randomize_layout halayen, kuma yana buƙatar saita iri ta amfani da tutar "-frandomize-layout-seed" ko "-frandomize-layout-seed-file".
  • An ƙara "-fstrict-flex-arrays=" tuta ", tare da abin da zaku iya sarrafa iyakoki don sassauƙan tsararru mai sassauƙa a cikin sifofi (Membobin Array masu sassauƙa, tsararru na girman mara iyaka a ƙarshen tsarin). Lokacin da aka saita zuwa 0 (tsoho), kashi na ƙarshe na tsarin tare da tsararru koyaushe ana sarrafa shi azaman tsararru mai sassauƙa, 1 - masu girma dabam [], [0] da [1] ana sarrafa su azaman tsararru mai sassauƙa, 2 - masu girma dabam kawai. [] da [0] ana sarrafa su kamar tsararru mai sassauƙa.
  • Ƙara goyan bayan gwaji don yaren C-kamar HLSL (Harshen Shader High-Level), wanda aka yi amfani da shi a cikin DirectX don rubuta shaders.
  • An ƙara "-Warray-parameter" don faɗakarwa game da ƙetare ayyuka tare da maganganun gardama marasa jituwa masu alaƙa da ƙayyadaddun tsararrun tsayi da tsayi.
  • Ingantattun daidaituwa tare da MSVC. Ƙara goyon baya don "#pragma function" (yana umurci mai haɗawa don samar da kiran aiki maimakon fadada layin layi) da "#pragma alloc_text" (yana bayyana sunan sashin tare da lambar aikin) da aka bayar a cikin MSVC. Ƙara goyon baya don MSVC masu jituwa /JMC da /JMC tutoci.
  • Aiki yana ci gaba da tallafawa ma'aunin C2X da C++23 na gaba. Don yaren C, ana aiwatar da waɗannan abubuwa: sifa ta noreturn, kalmomin karya da gaskiya, nau'in _BitInt(N) don ƙididdige ƙimar zurfin da aka bayar, *_WIDTH macros, prefix na u8 don haruffan UTF-8.

    Don C++, ana aiwatar da waɗannan abubuwa masu zuwa: haɗaɗɗiyar module, keɓancewar ABI na membobin ayyuka, ba da umarnin farawa mai ƙarfi na masu canji na gida a cikin kayayyaki, masu sarrafa ma'auni na multidimensional, auto(x), masu canji na zahiri, goto da lakabi a cikin ayyukan da aka ayyana azaman constexpr , iyakataccen jerin tserewa, masu suna tserewa haruffa.

  • An faɗaɗa iyawar da ke da alaƙa da tallafin OpenCL da OpenMP. Ƙara goyon baya don fadada OpenCL cl_khr_subgroup_rotate.
  • Don tsarin gine-ginen x86, an ƙara kariya daga lahani a cikin na'urori masu sarrafawa da suka haifar da hasashe na aiwatar da umarni bayan ayyukan tsalle-tsalle marasa ƙa'ida. Matsalar tana faruwa ne saboda aiwatar da umarni da wuri nan da nan bin umarnin reshe a cikin ƙwaƙwalwar ajiya (SLS, Hasashen Layi Madaidaici). Don ba da damar kariya, zaɓin "-mharden-sls = [babu|duk|dawo| kaikaice-jmp]" an ba da shawarar.
  • Don dandamali waɗanda ke goyan bayan tsawo na SSE2, an ƙara nau'in _Float16, wanda aka kwaikwayi ta amfani da nau'in iyo a yanayin rashin tallafi ga umarnin AVX512-FP16.
  • An ƙara tutar "-m [no-] rdpru" don sarrafa amfani da umarnin RDPRU, ana goyan bayan farawa da na'urori masu sarrafawa na AMD Zen2.
  • An ƙara alamar "-mfunction-return=thunk-extern" don kare kariya daga raunin RETBLEED, wanda ke aiki ta ƙara jerin umarni waɗanda ke keɓance sa hannun tsarin aiwatar da hasashe don rassan kai tsaye.

Mabuɗin sabbin abubuwa a cikin LLVM 15.0:

  • Ƙara goyon baya don Cortex-M85 CPU, Armv9-A, Armv9.1-A da Armv9.2-A gine-gine, Armv8.1-M PACBTI-M kari.
  • An ƙara ƙarshen gwaji don DirectX wanda ke goyan bayan tsarin DXIL (DirectX Intermediate Language) da aka yi amfani da shi don inuwar DirectX. Ana kunna ƙarshen baya ta hanyar tantance ma'aunin "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX" yayin taro.
  • Libc++ ya ci gaba da aiwatar da sabbin fasalulluka na ka'idojin C ++20 da C++ 2b, gami da kammala aiwatar da ɗakin karatu na "tsara" da ƙirar gwaji da aka gabatar na ɗakin karatu na "ranges".
  • Ingantattun abubuwan baya don x86, PowerPC da RISC-V gine-gine.
  • An haɓaka ƙarfin mai haɗin LLD da LLDB debugger.

source: budenet.ru

Add a comment