Mwepụta nke LLVM 15.0 compiler suite

Mgbe ọnwa isii nke mmepe gasịrị, ewepụtara ntọhapụ nke ọrụ LLVM 15.0 - ngwa ọrụ GCC dakọtara (ndị na-achịkọta, ndị na-emepe emepe na ndị na-emepụta koodu) na-achịkọta mmemme n'ime bitcode etiti nke RISC-dị ka ntuziaka mebere (igwe mebere dị ala nke nwere obere igwe). usoro njikarịcha ọkwa dị iche iche). Enwere ike ịtụgharị pseudocode emepụtara site na iji mkpokọta JIT ka ọ bụrụ ntuziaka igwe ozugbo n'oge mmebe mmemme.

Nnukwu nkwalite na Clang 15.0:

  • Maka sistemụ dabere na ụlọ ọrụ x86, agbakwunyere ọkọlọtọ “-fzero-call-used-regs”, nke na-eme ka ndekọ aha CPU niile ejiri rụọ ọrụ ahụ na-emegharị na efu tupu ịlaghachi njikwa site na ọrụ ahụ. Nhọrọ a na-enye gị ohere ichebe pụọ na ntapu ozi site na ọrụ ma belata ọnụ ọgụgụ ngọngọ dabara adaba maka iwulite ngwa ROP (Return-oriented Programming) na nrigbu ihe dịka 20%.
  • E mejuputala randomization nke ebe nchekwa nke ihe owuwu maka koodu C, nke na-eme ka mwepụta data sitere na ihe owuwu ma ọ bụrụ na emegbu adịghị ike. A na-agbanye ma gbanyụọ randomization site na iji randomize_layout na no_randomize_layout attributes, ma na-achọ ịtọ mkpụrụ site na iji ọkọlọtọ "-frandomize-layout-seed" ma ọ bụ "-frandomize-layout-seed-file".
  • Etinyere "-fstrict-flex-arrays=" ọkọlọtọ ", nke ị nwere ike ijikwa oke maka ihe nhazi nhazi na-agbanwe agbanwe na nhazi (Ndị otu na-agbanwe agbanwe, ụdị nke na-enweghị njedebe na njedebe nke nhazi ahụ). Mgbe etinyere ya na 0 (nke ndabara), a na-ahazi ihe ikpeazụ nke ihe owuwu ahụ nwere nhazi oge niile ka ọ bụrụ ihe na-agbanwe agbanwe, 1 - naanị nha [], [0] na [1] ka a na-ahazi dị ka nhazi mgbanwe, 2 - naanị nha. [] na [0] ka a na-ahazi dị ka nhazi ngbanwe.
  • Nkwado nnwale agbakwunyere maka asụsụ C-dị ka HLSL (Asụsụ Shader dị elu), ejiri na DirectX maka ide shaders.
  • Agbakwunyere "-Warray-parameter" iji dọọ aka ná ntị gbasara ọrụ gabigara ya na nkwuwapụta arụmụka na-ekwekọghị ekwekọ jikọtara ya na nhazi ogologo na agbanwe agbanwe.
  • Ndakọrịta emelitere na MSVC. Nkwado agbakwunyere maka "#pragma function" (na-eduzi onye nchịkọta ka ọ mepụta oku ọrụ kama ịgbasa inline) yana "#pragma alloc_text" (na-akọwa aha ngalaba na koodu ọrụ) enyere na MSVC. Nkwado agbakwunyere maka ọkọlọtọ MSVC dakọtara /JMC na /JMC.
  • Ọrụ na-aga n'ihu na-akwado ụkpụrụ C2X na C++ 23 n'ọdịnihu. Maka asụsụ C, a na-emejuputa ihe ndị a: njirimara noreturn, mkpụrụokwu ụgha na eziokwu, ụdị _BitInt(N) maka integers nke ntakịrị omimi, * _WIDTH macros, prefix u8 maka mkpụrụedemede UTF-8.

    Maka C ++, a na-emejuputa ihe ndị a: modul merging, ABI kewapụrụ ndị otu ọrụ, nyere iwu mmalite ike nke mgbanwe ndị na-abụghị mpaghara na modul, multidimensional index operators, auto(x), mgbanwe na-abụghị nke nkịtị, goto na labels na ọrụ ekwuputara dị ka constexpr. , usoro mgbapụ nwere oke, akpọrọ agwa mgbapụ.

  • Ike ejikọtala na nkwado OpenCL na OpenMP. agbakwunyere nkwado maka OpenCL ndọtị cl_khr_subgroup_rotate.
  • Maka ihe owuwu x86, agbakwunyela nchebe megide adịghị ike na ndị nrụpụta ihe kpatara site na mkpochapụ nke ntuziaka ka arụchara ọrụ mbuli na-enweghị atụ. Nsogbu a na-eme n'ihi nhazi nhazi nke ntuziaka ozugbo na-eso ntuziaka alaka ụlọ ọrụ na ebe nchekwa (SLS, Straight Line Speculation). Iji mee ka nchedo, nhọrọ "-mharden-sls=[enweghị|niile|nlaghachi|indirect-jmp]" ka atụpụtara.
  • Maka ikpo okwu na-akwado ndọtị SSE2, agbakwunyere ụdị _Float16, nke a na-eṅomi site na iji ụdị float n'ọnọdụ enweghị nkwado maka ntụziaka AVX512-FP16.
  • Agbakwunyere ọkọlọtọ "-m [no-] rdpru" iji jikwaa iji ntuziaka RDPRU, na-akwado malite na AMD Zen2 processors.
  • Agbakwunyere ọkọlọtọ "-mfunction-return=thunk-extern" iji chebe megide adịghị ike RETBLEED, nke na-arụ ọrụ site n'ịgbakwunye usoro ntụziaka nke na-ewepu ntinye aka nke usoro igbu asịrị maka alaka ndị na-apụtaghị ìhè.

Ihe ohuru ohuru na LLVM 15.0:

  • Nkwado agbakwunyere maka Cortex-M85 CPU, Armv9-A, Armv9.1-A na Armv9.2-A architectures, Armv8.1-M PACBTI-M ndọtị.
  • Agbakwụnyela ihe ndabere nnwale maka DirectX nke na-akwado usoro DXIL (DirectX Intermediate Language) eji maka ndo DirectX. Agbanyere azụ azụ site na ịkọwapụta “-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX” n'oge mgbakọ.
  • Libc++ na-aga n'ihu na-emejuputa atụmatụ ọhụrụ nke ụkpụrụ C++20 na C++2b, gụnyere mmecha nke mmejuputa ụlọ akwụkwọ "format" na ụdị nnwale a tụrụ aro nke ọba akwụkwọ "ranges".
  • Ihe nkwụghachi azụ emelitere maka ụlọ x86, PowerPC na RISC-V.
  • Ewelitela ikike nke onye njikọ LLD na LLDB debugger.

isi: opennet.ru

Tinye a comment