Hoʻokuʻu ʻia o ka LLVM 13.0 compiler suite

Ma hope o ʻeono mahina o ka hoʻomohala ʻana, ua hōʻike ʻia ka hoʻokuʻu ʻana o ka papahana LLVM 13.0 - kahi hāmeʻa GCC-compatible (compilers, optimizers and code generators) e hōʻuluʻulu i nā papahana i loko o ka bitcode intermediate o nā ʻōlelo kuhikuhi virtual e like me RISC (he mīkini virtual haʻahaʻa haʻahaʻa me kahi. multi-level optimization system). Hiki ke hoʻololi ʻia ka pseudocode i hana ʻia me ka hoʻohana ʻana i kahi compiler JIT i nā kuhikuhi mīkini pololei i ka manawa o ka hoʻokō ʻana o ka papahana.

Hoʻomaikaʻi i ka Clang 13.0:

  • Hoʻokō ʻia ke kākoʻo no nā kelepona huelo i hoʻopaʻa ʻia (e kāhea ana i kahi subroutine ma ka hope loa o kahi hana, e hana ana i kahi hoʻihoʻi huelo inā kāhea ka subroutine iā ia iho). Hāʻawi ʻia ke kākoʻo no nā kelepona huelo i hoʻopaʻa ʻia e ka "[[clang::musttail]]" ma C++ a me "__attribute__((musttail))" ma C, hoʻohana ʻia i kahi ʻōlelo "hoʻihoʻi". Hāʻawi ka hiʻohiʻona iā ʻoe e hoʻokō i nā optimizations ma ka waiho ʻana i ke code i loko o kahi hoʻololi paʻa e mālama ai i ka hoʻohana ʻana.
  • Hāʻawi ka "hoʻohana" i nā ʻōlelo a me nā hoʻonui clang i ke kākoʻo no ka wehewehe ʻana i nā ʻano ʻano C++11 me ka hoʻohana ʻana i ka "[[]]" format.
  • Hoʻohui ʻia ka hae "-Wreserved-identifier" e hōʻike i kahi ʻōlelo aʻo ke kuhikuhi ʻoe i nā mea hōʻike i mālama ʻia ma ka code mea hoʻohana.
  • Hoʻohui ʻia nā hae "-Wunused-but-set-parameter" a me "-Wunused-but-set-variable" e hōʻike i kahi ʻōlelo aʻo inā hoʻonohonoho ʻia kahi ʻāpana a i ʻole hoʻohana ʻia.
  • Hoʻohui ʻia ka hae "-Wnull-pointer-subtraction" no ka hoʻopuka ʻana i kahi ʻōlelo aʻo inā hiki i ke code ke hoʻokomo i ka ʻano i wehewehe ʻole ʻia ma muli o ka hoʻohana ʻana i kahi kuhikuhi null i nā hana unuhi.
  • Hoʻohui ʻia ka hae "-fstack-usage" e hoʻopuka no kēlā me kēia faila code i kahi faila ".su" hou e loaʻa ana ka ʻike e pili ana i ka nui o nā papa hoʻopaʻa no kēlā me kēia hana i wehewehe ʻia i ka faila e hana ʻia nei.
  • Ua hoʻohui ʻia kahi ʻano hoʻopuka hou i ka static analyzer - "sarif-html", e alakaʻi ana i ka hana o nā hōʻike i ka manawa like ma HTML a me Sarif format. Hoʻohui hou i allocClassWithName nānā. Ke kuhikuhi nei i ke koho "-analyzer-display-progress", hōʻike ʻia ka manawa loiloi o kēlā me kēia hana. Aneane mākaukau ka mea hōʻike kuhikuhi kikoʻī (alpha.cplusplus.SmartPtr).
  • Ua hoʻonui ʻia nā mana e pili ana me ke kākoʻo OpenCL. Kākoʻo hou ʻia no nā mea hoʻonui hou cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields a me __cl_clang_non_portable_kernel_param_types. Ua hoʻomau ka hoʻokō ʻana i ka wehewehe OpenCL 3.0. No C, hoʻohana ʻia ka wehewehe ʻana o OpenCL 1.2 ma ke ʻano paʻamau ke ʻole i koho ʻia kahi mana ʻē aʻe. No C++, ua hoʻohui ʻia ke kākoʻo no nā faila me ka hoʻonui ".clcpp".
  • Ua hoʻokō ʻia ke kākoʻo no nā kuhikuhi hoʻololi loop (“#pragma omp unrol” a me “#pragma omp tile”) i wehewehe ʻia ma ka wehewehe OpenMP 5.1.
  • Nā koho i hoʻohui ʻia i ka pono clang-format: SpacesInLineCommentPrefix e wehewehe i ka helu o nā hakahaka ma mua o nā manaʻo, IndentAccessModifiers, LambdaBodyIndentation a me PPIndentWidth e hoʻomalu i ka alignment o nā mea komo, nā ʻōlelo lambda a me nā kuhikuhi preprocessor. Ua hoʻonui ʻia nā mea hiki ke hoʻokaʻawale i ka helu o nā faila poʻomanaʻo (SortIncludes). Hoʻohui ʻia ke kākoʻo no ka hoʻopili ʻana i nā faila JSON.
  • Ua hoʻohui ʻia kahi hapa nui o nā loiloi hou i ka linter clang-tidy.

Nā hana hou nui ma LLVM 13.0:

  • Hoʻohui ʻia ke koho "-ehcontguard" e hoʻohana i ka ʻenehana CET (Windows Control-flow Enforcement Technology) e pale aku i ka hoʻokō ʻana i nā hana i kūkulu ʻia me ka hoʻohana ʻana i nā ʻenehana Return-Oriented Programming (ROP).
  • Ua kapa hou ʻia ka papahana debuginfo-test i nā cross-project-tests a ua hoʻolālā ʻia e hoʻāʻo i nā ʻāpana mai nā papahana like ʻole, ʻaʻole i kaupalena ʻia i ka ʻike debugging.
  • Hāʻawi ka ʻōnaehana hui i ke kākoʻo no ke kūkulu ʻana i kekahi mau māhele, no ka laʻana, kekahi me nā pono hana, a ʻo kekahi me nā hale waihona puke no nā mea hoʻomohala.
  • Ma ke kua hope no ka hoʻolālā AArch64, kākoʻo ʻia ke kākoʻo no ka Armv9-A RME (Realm Management Extension) a me SME (Scalable Matrix Extension) i hoʻokō ʻia i ka assembler.
  • Ua hoʻohui ʻia ke kākoʻo no ISA V68/HVX i ka hope no ka hoʻolālā Hexagon.
  • Ua hoʻonui ka x86 backend i ke kākoʻo no nā kaʻina hana AMD Zen 3.
  • Hoʻohui i ke kākoʻo no GFX1013 RDNA2 APU i ka AMDGPU backend.
  • Ke hoʻomau nei ʻo Libc++ i ka hoʻokō ʻana i nā hiʻohiʻona hou o nā maʻamau C++20 a me C++2b, me ka hoʻopau ʻana i ka waihona "concepts". Hoʻohui ʻia ke kākoʻo no std :: filesystem no ke kahua Windows i hoʻokumu ʻia ma MinGW. Hoʻokaʻawale ʻia nā faila poʻomanaʻo , a me . Hoʻohui ʻia ke koho kūkulu ʻia LIBCXX_ENABLE_INCOMPLETE_FEATURES e hoʻopau i nā faila poʻomanaʻo me ka hoʻokō ʻole ʻia o ka hana.
  • Ua hoʻonui ʻia nā mana o ka LLD linker, kahi i hoʻokō ʻia ai ke kākoʻo no nā kaʻina hana Big-endian Aarch64, a ua lawe ʻia ka backend Mach-O i kahi mokuʻāina e hiki ai ke hoʻopili i nā papahana maʻamau. Pono nā hoʻomaikaʻi e hoʻopili iā Glibc me LLD.
  • Ua hoʻohui ka llvm-mca (Machine Code Analyzer) i ke kākoʻo no nā kaʻina hana e hoʻokō i nā ʻōlelo kuhikuhi (in-order superscalar pipeline), e like me ka ARM Cortex-A55.
  • Hāʻawi ka LLDB debugger no ka paepae AArch64 i ke kākoʻo piha no ka Pointer Authentication, MTE (MemTag, Memory Tagging Extension) a me nā papa inoa SVE. Nā kauoha i hoʻohui ʻia e ʻae iā ʻoe e hoʻopaʻa i nā hōʻailona i kēlā me kēia hana hoʻokaʻawale hoʻomanaʻo a hoʻonohonoho i kahi māka o ka pointer i ka wā e komo ai i ka hoʻomanaʻo, pono e hoʻopili ʻia me ka tag pololei.
  • Ua hoʻohui ʻia ka LLDB debugger a me ka frontend no ka ʻōlelo Fortran - Flang i nā hui binary i hana ʻia e ka papahana.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka