Te tukunga o te huinga whakahiato LLVM 13.0

I muri i nga marama e ono o te whakawhanaketanga, ka whakaatuhia te tukunga o te kaupapa LLVM 13.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.

Whakapai ake i te Clang 13.0:

  • I whakatinanahia te tautoko mo nga waea hiku taurangi (ka karangahia he mahi iti i te mutunga o te mahi, ka hanga he hokinga hiku mena ka karangahia e te roopu mahi). Ko te tautoko mo nga waea hiku taurangi ka tukuna e te huanga "[[clang::musttail]]" i C++ me te "__huanga__((musttail))" i C, whakamahia i roto i te korero "hoki". Ko te ahuatanga ka taea e koe te whakatinana i nga arotautanga ma te tuku i nga waehere ki roto i te taapiri papatahi hei whakaora i te kohi puranga.
  • "whakamahi" whakapuakanga me nga toronga clang e tautoko ana mo te tautuhi i nga huanga-ahua C++11 ma te whakamahi i te whakatakotoranga "[[]]".
  • I taapirihia te haki "-Wreserved-identifier" hei whakaatu i te whakatupato ina tohua e koe nga kaitautuhi kua rahuitia ki te waehere kaiwhakamahi.
  • I taapirihia nga haki "-Wunused-but-set-parameter" me te "-Wunused-but-set-variable" hei whakaatu i te whakatupato mena ka whakatauhia he tawhā, taurangi ranei engari kaore e whakamahia.
  • Kua taapirihia te haki "-Wnull-pointer-tango" ki te whakaputa whakatupato mena ka whakaurua e te waehere te whanonga kaore i tautuhia na te whakamahi i te tohu tohu kore i roto i nga mahi tangohanga.
  • I taapirihia te haki "-fstack-usage" hei whakaputa mo ia konae waehere he konae ".su" taapiri kei roto nga korero mo te rahi o nga papa taapu mo ia mahi kua tautuhia ki te konae e tukatukahia ana.
  • He momo putanga hou kua taapirihia ki te kaitirotiro pateko - "sarif-html", e arahi ana ki te whakaputa purongo i te wa kotahi i roto i nga whakatakotoranga HTML me Sarif. Kua taapirihia te haki allocClassWithName hou. Ina tohua te "-analyzer-display-progress", ka whakaatuhia te wa tātari o ia mahi. Kua tata rite te kaitirotiro atatohu atamai (alpha.cplusplus.SmartPtr).
  • Ko nga kaha e pa ana ki te tautoko OpenCL kua whakawhānuihia. He tautoko taapiri mo nga toronga hou cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields me __cl_clang_non_portable_kernel_param_types. Kua haere tonu te whakatinanatanga o te OpenCL 3.0. Mo C, ka whakamahia taunoa te whakatakotoranga OpenCL 1.2 ki te kore e tino whiriwhiria tetahi atu putanga. Mo C++, kua taapirihia te tautoko mo nga konae me te toronga ".clcpp".
  • Ko te tautoko mo nga tohutohu huringa hurihanga ("#pragma omp unrol" me "#pragma omp tile") kua tautuhia i roto i te waahanga OpenMP 5.1 kua whakatinanahia.
  • Ko nga whiringa taapiri ki te whaipainga clang-format: SpacesInLineCommentPrefix ki te tautuhi i te maha o nga mokowā i mua i nga korero, IndentAccessModifiers, LambdaBodyIndentation me PPIndentWidth hei whakahaere i te tirohanga o nga whakaurunga, nga whakaaturanga lambda me nga tohutohu o mua. Kua whakawhänuihia nga huarahi mo te whakariterite i te tatau o nga konae pane (SortIncludes). He tautoko taapiri mo te whakahōputu i nga konae JSON.
  • He nui te waahanga o nga arowhai hou kua taapirihia ki te tarai i nga papa.

Nga mea hou i roto i te LLVM 13.0:

  • I taapirihia te whiringa "-ehcontguard" ki te whakamahi i te hangarau CET (Windows Control-flow Enforcement Technology) ki te whakamarumaru i te mahi o nga mahi i hangaia ma te whakamahi i nga tikanga Return-Oriented Programming (ROP) i te waahanga whakahaere motuhake.
  • Ko te kaupapa debuginfo-test kua whakaingoatia ko nga whakamatautau-whakamatautau-whakamatautau me te hoahoa ki te whakamatautau i nga waahanga mai i nga kaupapa rereke, kaore i te iti ki te patuiro korero.
  • Ko te punaha huihuinga he tautoko mo te hanga i nga tohatoha maha, hei tauira, tetahi me nga taputapu, me tetahi atu he whare pukapuka mo nga kaihanga.
  • I te tuara mo te hoahoanga AArch64, ka whakatinanahia te tautoko mo te Armv9-A RME (Realm Management Extension) me te SME (Scalable Matrix Extension) i roto i te assembler.
  • Ko te tautoko mo te ISA V68/HVX kua taapirihia ki te tuara mo te hoahoanga Hexagon.
  • Ko te tuara x86 kua pai ake te tautoko mo nga tukatuka AMD Zen 3.
  • He tautoko taapiri mo te GFX1013 RDNA2 APU ki te tuara AMDGPU.
  • 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 whare pukapuka "ariari". He tautoko taapiri mo te std::pūnaha kōnae mo te papaaho Matapihi a MinGW. Kua wehea nga konae pane , Na . Kua taapirihia te whiringa hanga LIBCXX_ENABLE_INCOMPLETE_FEATURES hei whakakore i nga konae pane kaore i te tino whakatinanahia.
  • Kua whakawhänuihia nga kaha o te hononga hononga LLD, i reira ka whakatinanahia te tautoko mo nga kaitoro Aarch64 Big-endian, a kua kawea mai te Mach-O backend ki tetahi kawanatanga e taea ai te hono i nga kaupapa auau. Kei roto ko nga whakapainga hei hono i a Glibc ma te whakamahi i te LLD.
  • Ko te taputapu llvm-mca (Machine Code Analyzer) kua taapirihia he tautoko mo nga kaitukatuka e whakahaere ana i nga tohutohu i runga i te raupapa (i roto i te raupapa paipa superscalar), penei i te ARM Cortex-A55.
  • Ko te kaiwhakairo LLDB mo te papaaho AArch64 e whakarato tautoko katoa ana mo te Motuhēhēnga Tohu, MTE (MemTag, Toronga Tohu Mahara) me nga rehita SVE. Ko nga whakahau taapiri e taea ai e koe te here i nga tohu ki ia mahinga toha mahara me te whakarite i te haki o te atatohu ina uru ki te mahara, me hono ki te tohu tika.
  • Ko te LLDB debugger me te mua mo te reo Fortran - Flang kua taapirihia ki nga huihuinga takirua i hangaia e te kaupapa.

Source: opennet.ru

Tāpiri i te kōrero