Te tukunga o te huinga whakahiato LLVM 15.0

I muri i nga marama e ono o te whakawhanaketanga, ka whakaatuhia te tukunga o te kaupapa LLVM 15.0 - he kete taputapu hototahi ki te GCC (kaiwhakahiato, kaiwhakatikatika me nga kaihanga waehere) e whakahiato ana i nga kaupapa ki roto i te bitcode takawaenga o nga tohutohu mariko rite-RISC (he miihini mariko taumata-iti me te pūnaha arotautanga taumata-maha). Ka taea te huri i te pseudocode i hangaia ma te whakamahi i te kaitoi JIT ki nga tohutohu miihini tika i te wa e mahia ana te kaupapa.

Nga whakapainga nui i Clang 15.0:

  • Mo nga punaha i runga i te hoahoanga x86, kua taapirihia te haki "-fzero-call-used-regs", e whakarite ana ko nga rehita CPU katoa e whakamahia ana i roto i te mahi ka tautuhia ki te kore i mua i te whakahoki mai i te mana mai i te mahi. Ma tenei whiringa ka taea e koe te whakamarumaru mai i te rerenga korero mai i nga mahi me te whakaheke i te maha o nga poraka e tika ana mo te hanga taputapu ROP (Return-Oriented Programming) i roto i nga mahi ma te 20%.
  • Kua whakatinanahia te whakatakotoranga mahara o nga hanganga mo te waehere C, e whakararu ana i te tangohanga o nga raraunga mai i nga hanganga mena ka whakamahia nga whakaraeraetanga. Ka whakakāhia, ka whakawetohia te Randomize_layout me te no_randomize_layout huanga, me whakarite kakano ma te whakamahi i te haki "-frandomize-layout-seed" ranei "-frandomize-layout-seed-file".
  • I taapirihia te haki "-fstrict-flex-arrays=", e taea ai e koe te whakahaere i nga rohenga mo te huānga huānga ngawari i roto i nga hanganga (Nga Mema Huanga Hangarau, he huinga o te rahi i te mutunga o te hanganga). Ina tautuhia ki te 0 (taunoa), ka tukatukahia te huānga whakamutunga o te hanganga me te huānga hei huānga ngawari, 1 - ko nga rahi [], [0] me te [1] anake ka tukatukahia hei huānga ngawari, 2 - nga rahi anake Ko te [] me te [0] ka tukatukahia ano he huinga ngongo.
  • Kua taapirihia he tautoko whakamatautau mo te reo C-rite HLSL (High-Level Shader Language), whakamahia i roto i te DirectX mo te tuhi whakamarumaru.
  • Kua taapirihia te "-Warray-tawhā" hei whakatupato mo nga taumahi e kore e hototahi me nga whakapuakanga tohenga hotokore e hono ana ki nga hurangi taurangi me te taurangi-roa.
  • Kua pai ake te hototahi me MSVC. He tautoko taapiri mo te "mahi #pragma" (whakaakohia te kaitoi ki te whakaputa waea mahi hei utu mo te roha-a-roto) me te "#pragma alloc_text" (whakaahua te ingoa o te waahanga me te waehere mahi) kua whakaratohia ki MSVC. He tautoko taapiri mo nga haki MSVC-hototahi /JMC me /JMC.
  • Ka tautoko tonu te mahi i nga paerewa C2X me C++23 a meake nei. Mo te reo C, ko enei e whai ake nei: ko te huanga noreturn, ko nga kupu matua he teka me te pono, te momo _BitInt(N) mo nga tauoti o te hohonu moka kua homai, *_WIDTH tonotono, te u8 prefix mo UTF-8 pūāhua whakawaeheretia.

    Mo te C++, ka whakatinanahia nga mea e whai ake nei: te hanumi kōwae, te wehenga ABI o nga mema mahi, te whakahau i te arawhitinga hihiri o nga taurangi kore-rohe i roto i nga waahanga, nga kaiwhakahaere taurangi maha, aunoa(x), taurangi kore-tuhi, goto me nga tapanga i roto i nga mahi kua kiia hei constexpr , nga raupapa mawhiti rohe, whakaingoatia nga tohu mawhiti.

  • Ko nga kaha e hono ana ki te tautoko OpenCL me OpenMP kua whakawhānuihia. He tautoko taapiri mo te toronga OpenCL cl_khr_subgroup_rotate.
  • Mo te hoahoanga x86, kua taapirihia te whakamarumaru ki nga whakaraeraetanga i roto i nga kaiwhakatikatika i puta mai i te whakatinanatanga o nga tohutohu i muri i nga mahi peke whakamua. Ka puta te raruraru na te tukatuka i mua i nga tohutohu i muri tonu i te tohutohu peka i roto i te mahara (SLS, Tikanga Raina Tika). Kia taea ai te whakamarutanga, ko te whiringa "-mharden-sls=[kore|katoa|whakahoki|autaki-jmp]" ka tukuna.
  • Mo nga papaaho e tautoko ana i te toronga SSE2, kua taapirihia te momo _Float16, ka peehia ma te whakamahi i te momo rererangi i te mea kaore he tautoko mo nga tohutohu AVX512-FP16.
  • Kua taapirihia te haki "-m[no-]rdpru" ki te whakahaere i te whakamahinga o te ako RDPRU, ka tautokohia me te tiimata me nga tukatuka AMD Zen2.
  • I taapirihia te haki "-mfunction-return=thunk-extern" hei whakamarumaru i te whakaraeraetanga RETBLEED, e mahi ana ma te taapiri i te raupapa o nga tohutohu ka kore e uru mai te tikanga whakamate mo nga peka kore.

Nga mea hou i roto i te LLVM 15.0:

  • He tautoko taapiri mo te Cortex-M85 CPU, Armv9-A, Armv9.1-A me Armv9.2-A hoahoanga, Armv8.1-M PACBTI-M toronga.
  • Kua taapirihia he tuara whakamatautau mo DirectX e tautoko ana i te whakatakotoranga DXIL (DirectX Intermediate Language) mo nga whakamarumaru DirectX. Ka taea te tuara ma te tohu i te tawhā "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX" i te wa e huihui ana.
  • Kei te whakatinana tonu a Libc++ i nga ahuatanga hou o nga paerewa C++20 me C++2b, tae atu ki te whakaotinga o te whakatinanatanga o te whare pukapuka "whakaahua" me te putanga whakamatautau o te whare pukapuka "awhe".
  • He pai ake nga tuara mo nga hoahoanga x86, PowerPC me RISC-V.
  • Ko nga kaha o te hononga LLD me te LLDB patuiro kua whakareia ake.

Source: opennet.ru

Tāpiri i te kōrero