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:

  • Kākoʻo ʻia nā kāhea huelo i hōʻoia ʻia (kahi kāhea i kahi subroutine ma ka hopena loa o kahi hana, e hana ana i kahi recursion huelo inā kāhea ka subroutine iā ia iho). Kākoʻo ʻia nā kāhea huelo i hōʻoia ʻia me ka hoʻohana ʻana i ka ʻano "[[clang::musttail]]" ma C++ a me "__attribute__((musttail))" ma C, i hoʻohana ʻia ma ka ʻōlelo "return". Hiki i kēia hiʻohiʻona ke hoʻonui i ka hoʻopili ʻana i ke code i loko o kahi iteration pālahalaha e mālama i kahi stack.
  • Kākoʻo ʻia nā wehewehe ʻano C++11 i kēia manawa ma ke clang "hoʻohana ʻana" i nā hoʻolaha a me nā hoʻonui, me ka hoʻohana ʻana i ke ʻano "[[]]".
  • Ua hoʻohui ʻia ka hae "-Wreserved-identifier" e hōʻike i kahi ʻōlelo aʻo i ka wā e kuhikuhi ana i nā mea hōʻike i mālama ʻia i loko o ke code mea hoʻohana.
  • Ua hoʻohui ʻia nā hae "-Wunused-but-set-parameter" a me "-Wunused-but-set-variable" e paʻi i kahi ʻōlelo aʻo inā ua hoʻonohonoho ʻia kahi parameter a loli paha akā ʻaʻole i hoʻohana ʻia.
  • Ua hoʻohui ʻia ka hae "-Wnull-pointer-subtraction" e hoʻomaopopo inā hiki i ke code ke hana i kahi hana i wehewehe ʻole ʻia ma muli o ka hoʻohana ʻana i kahi pointer null i nā hana hoʻemi.
  • Ua hoʻohui ʻia ka hae "-fstack-usage" e hana no kēlā me kēia faila code i kahi faila ".su" hou aʻe e loaʻa ana ka ʻike e pili ana i ka nui o nā mōlina stack no kēlā me kēia hana i ho'ākāka ʻia ma ka faila e hana ʻia nei.
  • Loaʻa i ka mea kālailai static kahi ʻano hoʻopuka hou, ʻo "sarif-html," nāna e hoʻopuka i nā hōʻike ma nā ʻano HTML a me Sarif. Ua hoʻohui ʻia kahi hōʻoia hou, ʻo allocClassWithName. Hōʻike ke koho "-analyzer-display-progress" i ka manawa kālailai no kēlā me kēia hana. Ua kokoke pau ka mea kālailai pointer akamai (alpha.cplusplus.SmartPtr).
  • Ua hoʻonui ʻia ke kākoʻo OpenCL. Ua hoʻohui ʻia ke kākoʻo no nā hoʻonui cl_khr_integer_dot_product hou, cl_khr_extended_bit_ops, __cl_clang_bitfields, a me __cl_clang_non_portable_kernel_param_types. Ua hoʻomau ʻia ka hoʻokō ʻana o ka kikoʻī OpenCL 3.0. No C, hoʻohana ʻia ʻo OpenCL 1.2 ma ka paʻamau ke ʻole kahi mana ʻē aʻe i koho pono ʻia. Ua hoʻohui ʻia ke kākoʻo no nā faila me ka hoʻonui ".clcpp" no C++.
  • 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 kikoʻī OpenMP 5.1.
  • Ua hōʻano hou ʻia ka pono hana clang-format me nā koho aʻe: SpacesInLineCommentPrefix no ka wehewehe ʻana i ka helu o nā hakahaka ma mua o nā manaʻo, IndentAccessModifiers, LambdaBodyIndentation, a me PPIndentWidth no ka kaohi ʻana i ka hoʻonohonoho ʻana o nā moʻolelo, nā hōʻike lambda, a me nā kuhikuhi preprocessor. Ua hoʻonui ʻia nā hiki ke hoʻokaʻawale i ka papa inoa faila poʻomanaʻo (SortIncludes). Ua hoʻohui ʻia ke kākoʻo no ka hoʻonohonoho ʻana i ka faila JSON.
  • Ua hoʻohui ʻia kahi nui o nā nānā hou i ka clang-tidy linter.

Nā hana hou nui ma LLVM 13.0:

  • Ua hoʻohui ʻia ke koho "-ehcontguard" e hoʻohana i ka ʻenehana CET (Windows ʻO ka ʻenehana hoʻokō kaohi-kahe) e pale aku i ka hoʻokō ʻana o nā hana hoʻopunipuni i kūkulu ʻia me ka hoʻohana ʻana i nā ʻano hana papahana hoʻihoʻi-oriented (ROP) i ke kahua lawelawe ʻokoʻa.
  • Ua kapa hou ʻia ka papahana debuginfo-test i cross-project-tests a ua hoʻolālā ʻia no ka hoʻāʻo ʻana i nā ʻāpana mai nā papahana like ʻole, ʻaʻole i kaupalena ʻia i ka ʻike debug.
  • Kākoʻo ka ʻōnaehana kūkulu i ke kūkulu ʻana i nā hāʻawi he nui, no ka laʻana, hoʻokahi me nā pono hana a ʻo kekahi me nā hale waihona puke no nā mea hoʻomohala.
  • Hoʻokō ka backend no ka hoʻolālā AArch64 i ke kākoʻo no nā hoʻonui Armv9-A RME (Realm Management Extension) a me SME (Scalable Matrix Extension) i loko o ka assembler.
  • Ua hoʻohui ʻia ke kākoʻo no ISA V68/HVX i ka backend hoʻolālā Hexagon.
  • Ua hoʻomaikaʻi ka backend x86 i ke kākoʻo no nā kaʻina hana AMD Zen 3.
  • Ua hoʻohui ʻia ke kākoʻo no ka 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ā kūlana C++20 a me C++2b, me ka hoʻopau ʻana i ka waihona puke "manaʻo". No ke kahua Windows Ua hoʻohui ʻia ke kākoʻo no ka std::filesystem e pili ana iā MinGW. Ua hoʻokaʻawale ʻia nā faila poʻomanaʻo. , A Ua hoʻohui ʻia ke koho kūkulu LIBCXX_ENABLE_INCOMPLETE_FEATURES e hoʻopau i nā faila poʻomanaʻo me ka hana piha ʻole.
  • Ua hoʻonui ʻia ka mea hoʻopili LLD e kākoʻo i nā kaʻina hana Big-endian Aarch64, a ua hoʻomaikaʻi ʻia ka backend Mach-O e ʻae i ka hoʻopili ʻana o nā polokalamu maʻamau. Ua hoʻokomo ʻia nā hoʻomaikaʻi e pono ai no ka hoʻopili ʻana iā Glibc me ka hoʻohana ʻana iā LLD.
  • Ua hōʻano hou ʻia ka pono hana llvm-mca (Machine Code Analyzer) e kākoʻo i nā mea hana e hoʻokō ana i nā ʻōkuhi ma ke ʻano (in-order superscalar pipeline), e like me ka ARM Cortex-A55.
  • Ke kākoʻo piha nei ka debugger LLDB no ka paepae AArch64 i ka hōʻoia pointer, ka ʻōnaehana Memory Tagging Extension (MemTag), a me nā registers SVE. Ua hoʻohui ʻia nā kauoha e hoʻopili i nā lepili me kēlā me kēia hana hoʻokaʻawale hoʻomanaʻo a e hōʻoia i ka pili ʻana o ka pointer me ka lepili kūpono i ka wā o ke komo ʻana i ka hoʻomanaʻo.
  • Ua hoʻohui ʻia ka debugger LLDB a me ka Fortran frontend, ʻo Flang, i nā ʻākoakoa binary i hana ʻia e ka papahana.

Source: opennet.ru

E kūʻai i ka hoʻokipa hilinaʻi no nā pūnaewele me ka pale DDoS, nā kikowaena VPS VDS 🔥 E kūʻai i ka hoʻokipa pūnaewele hilinaʻi me ka pale DDoS, nā kikowaena VPS VDS | ProHoster