Sgaoileadh an t-sreath cruinneachaidh LLVM 13.0

Às deidh sia mìosan de leasachadh, chaidh sgaoileadh a’ phròiseict LLVM 13.0 a thaisbeanadh - pasgan inneal a tha co-chosmhail ri GCC (luchd-cruinneachaidh, optimizers agus gineadairean còd) a bhios a ’cur ri chèile prògraman ann an còd bit eadar-mheadhanach de stiùiridhean brìgheil coltach ri RISC (inneal brìgheil aig ìre ìosal le inneal-lìonaidh. siostam optimization ioma-ìre). Faodar am pseudocode a chaidh a chruthachadh a thionndadh le bhith a’ cleachdadh inneal-cruinneachaidh JIT gu stiùireadh inneal gu dìreach aig àm coileanadh a’ phrògraim.

Leasachaidhean ann an Clang 13.0:

  • Taic air a chuir an gnìomh airson fiosan earbaill barantaichte (a’ gairm subroutine aig fìor cheann gnìomh, a’ cruthachadh ath-chuairteachadh earbaill ma tha an subroutine ga ghairm fhèin). Tha taic airson fiosan earbaill cinnteach air a thoirt seachad leis a’ bhuadh “[[clang::musttail]]” ann an C++ agus “__attribute__((musttail))” ann an C, air a chleachdadh ann an aithris “tilleadh”. Leigidh am feart leat optimizations a chuir an gnìomh le bhith a’ cleachdadh còd ann an tionndadh rèidh gus caitheamh stac a shàbhaladh.
  • Bheir "cleachdadh" dearbhaidhean agus leudachaidhean clang taic airson a bhith a' mìneachadh buadhan stoidhle C++11 a' cleachdadh an fhòrmat "[[]]".
  • Chuir sinn a’ bhratach “-Wreserved-identifier” ris gus rabhadh a thaisbeanadh nuair a shònraicheas tu aithnichearan glèidhte ann an còd cleachdaiche.
  • Chaidh brataichean “-Wunused-but-set-parameter” agus “-Wunused-but-set-variable” a chuir ris gus rabhadh a thaisbeanadh ma tha paramadair no caochladair air a shuidheachadh ach nach eilear ga chleachdadh.
  • Chaidh bratach “-Wnull-pointer-subtraction” a chur ris gus rabhadh a thoirt seachad ma dh’ fhaodadh an còd giùlan neo-mhìnichte a thoirt a-steach mar thoradh air a bhith a’ cleachdadh puing null ann an obair toirt air falbh.
  • Chuir sinn ris a’ bhratach “-fstack-usage” gus faidhle “.su” a bharrachd a ghineadh airson gach faidhle còd anns a bheil fiosrachadh mu mheud frèamaichean stac airson gach gnìomh a tha air a mhìneachadh san fhaidhle a thathar a’ giullachd.
  • Chaidh seòrsa toraidh ùr a chuir ris an anailisiche statach - “sarif-html”, a tha a’ leantainn gu gineadh aithisgean aig an aon àm ann an cruthan HTML agus Sarif. Chaidh seic allocClassWithName ùr a chur ris. Nuair a bhios tu a’ sònrachadh an roghainn “-analyzer-display-progress”, tha ùine sgrùdaidh gach gnìomh air a thaisbeanadh. Tha an anailisiche puing snasail (alpha.cplusplus.SmartPtr) cha mhòr deiseil.
  • Chaidh na comasan co-cheangailte ri taic OpenCL a leudachadh. Taic a bharrachd airson leudachain ùra cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields agus __cl_clang_non_portable_kernel_param_types. Tha buileachadh an t-sònrachadh OpenCL 3.0 air leantainn. Airson C, tha an sònrachadh OpenCL 1.2 air a chleachdadh gu bunaiteach mura tèid dreach eile a thaghadh gu soilleir. Airson C ++, tha taic airson faidhlichean leis an leudachadh “.clcpp” air a chur ris.
  • Chaidh taic airson stiùiridhean cruth-atharrachadh lùb (“# pragma omp unrol” agus “#pragma omp leacag”) a tha air am mìneachadh ann an sònrachadh OpenMP 5.1 a chuir an gnìomh.
  • Roghainnean air an cur ris a’ ghoireas cruth clang: SpacesInLineCommentPrefix gus an àireamh de dh’àiteachan a mhìneachadh ro bheachdan, IndentAccessModifiers, LambdaBodyIndentation agus PPIndentWidth gus smachd a chumail air co-thaobhadh inntrigidhean, abairtean lambda agus stiùiridhean ro-phròiseasar. Chaidh na cothroman airson àireamhachd fhaidhlichean cinn a sheòrsachadh (SortIncludes) a leudachadh. Taic a bharrachd airson fòrmatadh faidhlichean JSON.
  • Chaidh cuibhreann mòr de sgrùdaidhean ùra a chuir ri sgioblachadh linter.

Prìomh innleachdan ann an LLVM 13.0:

  • Chuir sinn ris an roghainn “-ehcontguard” gus teicneòlas CET (Teicneòlas Co-èigneachaidh Sruth Smachd Windows) a chleachdadh gus dìon an aghaidh coileanadh buannachdan a chaidh a thogail a ’cleachdadh dòighean Prògramadh Tilleadh (ROP) aig an ìre làimhseachaidh eisgeachd.
  • Chaidh am pròiseact deuchainn debuginfo ath-ainmeachadh mar dheuchainnean tar-phròiseact agus tha e air a dhealbhadh gus co-phàirtean bho dhiofar phròiseactan a dhearbhadh, gun a bhith cuibhrichte ri fiosrachadh deasbaid.
  • Tha an siostam cruinneachaidh a’ toirt taic airson grunn sgaoilidhean a thogail, mar eisimpleir, aon le goireasan, agus am fear eile le leabharlannan do luchd-leasachaidh.
  • Ann an cùl-raon ailtireachd AArch64, tha taic airson leudachadh Armv9-A RME (Realm Management Extension) agus SME (Leudachadh Matrix Scalable) air a chuir an gnìomh anns a’ cho-thional.
  • Chaidh taic airson ISA V68/HVX a chur ris an deireadh-sheachdain airson ailtireachd Hexagon.
  • Tha an backend x86 air taic nas fheàrr a thoirt do phròiseasan AMD Zen 3.
  • Taic a bharrachd airson GFX1013 RDNA2 APU gu backend AMDGPU.
  • Tha Libc ++ a’ leantainn air adhart a’ cur an gnìomh feartan ùra de na h-inbhean C++20 agus C++2b, a’ gabhail a-steach crìochnachadh an leabharlainn “bun-bheachdan”. Taic a bharrachd airson std :: siostam fhaidhlichean airson an àrd-ùrlar Windows stèidhichte air MinGW. Faidhlichean cinn air an sgaradh , Agus . Roghainn togail air a chur ris LIBCXX_ENABLE_INCOMPLETE_FEATURES gus faidhlichean cinn a chur à comas le comas-gnìomh nach deach a chur an gnìomh gu h-iomlan.
  • Chaidh comasan an neach-ceangail LLD a leudachadh, anns a bheil taic do phròiseasan Big-endian Aarch64 air a chuir an gnìomh, agus chaidh backend Mach-O a thoirt gu stàite a leigeas le prògraman cunbhalach a cheangal. Am measg leasachaidhean a dh’ fheumar gus Glibc a cheangal a’ cleachdadh LLD.
  • Tha an goireas llvm-mca (Machine Code Analyzer) air taic a chuir ri pròiseasairean a bhios a’ cur an gnìomh stiùireadh ann an òrdugh (pìob-loidhne superscalar ann an òrdugh), leithid an ARM Cortex-A55.
  • Tha an dì-bhugadair LLDB airson an àrd-ùrlar AArch64 a’ toirt seachad làn thaic airson Pointer Authentication, MTE (MemTag, Memory Tagging Extension) agus clàran SVE. Òrdughan a bharrachd a leigeas leat tagaichean a cheangal ri gach gnìomhachd riarachadh cuimhne agus seic den phuing a chuir air dòigh nuair a gheibh thu cothrom air cuimhne, a dh’ fheumas a bhith co-cheangailte ris an taga cheart.
  • Chaidh an dì-bhugadair LLDB agus an aghaidh airson cànan Fortran - Flang a chur ris na co-chruinneachaidhean dà-chànanach a chruthaich am pròiseact.

Source: fosgailtenet.ru

Cuir beachd ann