Hoʻokuʻu ʻia ka GCC 12 compiler suite

Ma hope o hoʻokahi makahiki o ka hoʻomohala ʻana, ua hoʻokuʻu ʻia ka compiler suite GCC 12.1, ka hoʻokuʻu nui mua i ka lālā GCC 12.x hou. E like me ka hoʻolālā helu hoʻokuʻu hou, ua hoʻohana ʻia ka mana 12.0 i ke kaʻina hana, a ma mua koke o ka hoʻokuʻu ʻia ʻana o GCC 12.1, ua hoʻomaka mua ka lālā GCC 13.0, ma ke kumu o ka hoʻokuʻu nui ʻana, GCC 13.1, e hookumuia. Ma Mei 23, e hoʻolauleʻa ka papahana i nā makahiki 35 mai ka hoʻokumu ʻia ʻana o ka paʻi mua o GCC.

Nā hoʻololi nui:

  • Kākoʻo hoʻohui ʻia no ka CTF (Compact Type Format) debug format, e hāʻawi ana i kahi mālama paʻa o ka ʻike e pili ana i nā ʻano C, nā pilina ma waena o nā hana a me nā hōʻailona debugging. Ke hoʻokomo ʻia i loko o nā mea ELF, ʻae ke ʻano i ka hoʻohana ʻana i nā papa kikoʻī EFL e pale i ka hoʻopili ʻana i ka ʻikepili.
  • Ua hoʻopau ʻia ke kākoʻo no ka "STABS" debugging information storage format, i hana ʻia i ka makahiki 1980.
  • Ke hoʻomau nei ka hana i ke kākoʻo no nā maʻamau C2X a me C++23 e hiki mai ana no nā ʻōlelo C a me C++. No ka laʻana, ua hoʻohui ʻia ke kākoʻo no ka ʻōlelo "if consteval"; ʻae ʻia e hoʻohana i ka auto i nā manaʻo hana ("f(auto(g()))"); ʻae ʻia ka hoʻohana ʻana i nā ʻano like ʻole, goto a me nā lepili i nā hana i haʻi ʻia he constexpr; kākoʻo hoʻohui ʻia no ka mea hoʻohana i nā mea hoʻohana helu helu multidimensional []; inā, no a hoʻololi, ua hoʻonui ʻia nā mana o nā poloka hoʻomaka ("no (hoʻohana iā T = int; T e : v)").
  • Ua hoʻomaikaʻi ka C++ Standard Library i ke kākoʻo no nā ʻāpana hoʻokolohua o nā maʻamau C++20 a me C++23. Hoʻohui kākoʻo no std::move_only_function, , std::kuai_kumu:: hoʻololi i ka nui a me ke kākau hou ʻana, , a std::invoke_r. ʻAe ʻia e hoʻohana i ka std::unique_ptr, std::vector, std::basic_string, std::koho a me std::variant i nā hana constexpr.
  • Hāʻawi ka Fortran frontend i ke kākoʻo piha no ka kikoʻī TS 29113, e wehewehe ana i nā hiki no ka hōʻoia ʻana i ka portability ma waena o Fortran a me C code.
  • Kākoʻo hoʻohui ʻia no ka hoʻonui __builtin_shufflevector(vec1, vec2, index1, index2, ...) i hoʻohui mua ʻia iā Clang, e hāʻawi ana i hoʻokahi kelepona e hana i nā hana shuffle vector maʻamau.
  • I ka hoʻohana ʻana i ka pae hoʻonui "-O2", hiki ke hoʻohana ʻia ka vectorization ma ka paʻamau (ua hoʻohana ʻia nā -ftree-vectorize a me -fvect-cost-model=very-cheap modes). Hiki i ke kumu ho'ohālike ha'aha'a loa i ka vectorization wale nō inā hiki i ke code vector ke ho'ololi piha i ke code scalar i vectorized.
  • Hoʻohui ʻia ke ʻano "-ftrivial-auto-var-init" e hiki ai i ka hoʻomaka mua ʻana o nā ʻano like ʻole ma ka waihona e nānā i nā pilikia a pale i nā nāwaliwali e pili ana i ka hoʻohana ʻana i nā ʻano like ʻole.
  • No nā ʻōlelo C a me C++, ua hoʻohui ʻia kahi hana i kūkulu ʻia __builtin_dynamic_object_size e hoʻoholo ai i ka nui o kahi mea, kūpono me kahi hana like mai Clang.
  • No nā ʻōlelo C a me C++, ua hoʻohui ʻia ke kākoʻo no ke ʻano "ʻaʻole i loaʻa" (no ka laʻana, hiki iā ʻoe ke kaha i nā hana e hoʻopuka ai i kahi hewa inā ʻoe e hoʻohana iā lākou).
  • No nā ʻōlelo C a me C++, ua hoʻohui ʻia ke kākoʻo no nā kuhikuhi preprocessing "#elifdef" a me "#elifndef".
  • Hoʻohui ʻia ka hae "-Wbidi-chars" e hōʻike i kahi ʻōlelo aʻo inā hoʻohana hewa ʻia nā huaʻōlelo UTF-8, e hoʻololi ana i ke ʻano e hōʻike ʻia ai nā kikokikona bidirectional.
  • Hoʻohui ʻia ka hae "-Warray-compare" e hōʻike i kahi ʻōlelo aʻo ke hoʻāʻo nei e hoʻohālikelike i ʻelua operand e pili ana i nā arrays.
  • ʻO ka hoʻokō ʻana i nā maʻamau OpenMP 5.0 a me 5.1 (Open Multi-Processing), e wehewehe ana i ka API a me nā ʻano hana no ka hoʻohana ʻana i nā ʻano papahana parallel ma nā ʻōnaehana multi-core a hybrid (CPU+GPU/DSP) me ka hoʻomanaʻo like ʻana a me nā ʻāpana vectorization (SIMD) , ua hoʻomau.
  • Hoʻomaikaʻi i ka hoʻokō ʻana o ka OpenACC 2.6 parallel programming specification, e wehewehe ana i nā mea hana no ka hoʻoiho ʻana i nā hana ma nā GPU a me nā kaʻina hana kūikawā e like me NVIDIA PTX.
  • Kākoʻo no nā ʻōlelo aʻo lōʻihi ʻo Intel AVX86-FP512 a me ke ʻano _Float16 i hoʻohui ʻia i ka code generation backend no ka hale hana x16.
  • No ka hoʻolālā x86, ua hoʻohui ʻia ka pale e kūʻē i nā nāwaliwali o nā kaʻina hana ma muli o ka hoʻokō speculative o nā ʻōlelo aʻoaʻo ma hope o nā hana lele mua ʻole. Loaʻa ka pilikia ma muli o ka hana mua ʻana o nā ʻōlelo aʻo ma hope koke o ke aʻo ʻana o ka lālā i ka hoʻomanaʻo (SLS, Straight Line Speculation). I mea e hiki ai ke pale aku, ua koho ʻia ke koho "-mharden-sls".
  • Hoʻohui ʻia ka ʻike ʻana o ka hoʻohana ʻana i nā ʻano like ʻole i hoʻomaka ʻia i ka hoʻokolohua static analyzer. Hoʻohui i ke kākoʻo mua no ka nānā ʻana i nā code hui ma nā mea hoʻokomo inline. Hoʻomaikaʻi ʻia ka nānā ʻana i ka hoʻomanaʻo. Ua kākau hou ʻia ke code no ka hana ʻana i nā ʻōlelo hoʻololi.
  • Hoʻohui ʻia he 30 mau kelepona hou iā libgccjit, kahi waihona waihona no ka hoʻokomo ʻana i kahi mea hana code i nā kaʻina hana ʻē aʻe a me ka hoʻohana ʻana iā JIT e hōʻuluʻulu i ka bytecode i loko o ka code mīkini.
  • ʻO ka hope no ka hana ʻana i ka BPF bytecode ua hoʻohui i ke kākoʻo no ka CO-RE (Compile Once - Run Everywhere), e hiki ai iā ʻoe ke hōʻuluʻulu i ke code o nā polokalamu eBPF no ka Linux kernel i hoʻokahi wale nō a hoʻohana i kahi mea hoʻoili honua kūikawā e hoʻololi i ka papahana i hoʻouka ʻia. i ka kernel o kēia manawa a me BPF Types Format). Hoʻoponopono ʻo CO-RE i ka pilikia o ka portability o nā polokalamu eBPF i hui ʻia, i hiki ke hoʻohana mua ʻia i ka mana o ka kernel i hōʻuluʻulu ʻia ai lākou, ʻoiai ke hoʻololi ʻia ke kūlana o nā mea i loko o nā hoʻolālā ʻikepili mai kahi mana a i kahi mana.
  • Hoʻohui ka RISC-V backend i ke kākoʻo no ka hoʻonui ʻana i ka hoʻonohonoho hoʻonohonoho hoʻonohonoho hou ʻana zba, zbb, zbc a me zbs, a me nā hoʻonui ISA no nā hana cryptographic vector a me scalar. Ma ka paʻamau, hāʻawi ʻia ke kākoʻo no ka RISC-V ISA 20191213 kikoʻī.
  • Ua hoʻohui ʻia ke kākoʻo no ke ʻano __int128_t/integer(kind=16) i ka code generation backend no nā AMD GPU e pili ana i ka microarchitecture GCN. Hiki ke hoʻohana a hiki i 40 mau pūʻulu hana no kēlā me kēia ʻāpana computing (CU) a hiki i 16 mau ʻaoʻao aʻo (wavefront, kahi pūʻulu o nā kaula i hana like ʻia e ka SIMD Engine) no kēlā me kēia hui. Ma mua, hoʻokahi wale nō ʻaoʻao aʻo i kēlā me kēia CU i ʻae ʻia.
  • ʻO ka backend NVPTX, i hoʻolālā ʻia e hana i ke code me ka hoʻohana ʻana i ka papa kuhikuhi hoʻonohonoho hoʻonohonoho NVIDIA PTX (Parallel Thread Execution), ua hoʻohui i ka hiki ke hoʻohana i nā hae "-march", "-mptx" a me "-march-map". Hoʻokomo ʻia ke kākoʻo no PTX ISA sm_53, sm_70, sm_75 a me sm_80. ʻO ka hale hana paʻamau ʻo sm_30.
  • Ma ka hope no PowerPC / PowerPC64 / RS6000 kaʻina hana, ua kākau hou ʻia nā hoʻokō o nā hana i kūkulu ʻia. ʻO nā hana i kūkulu ʻia __builtin_get_texasr, __builtin_get_texasru, __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr, __builtin_set_texasru, __builtin_set_tfhar a me __builtin_seted.
  • Kākoʻo no ka Arm Ampere-64 (-mcpu/-mtune ampere1), Arm Cortex-A1 (cortex-a510), Arm Cortex-A510 (cortex-a710) a me Arm Cortex-X710 (cortex- x2). Hoʻohui i ke kākoʻo no nā koho hoʻolālā ARMv2 hou no ka hoʻohana ʻana me ke koho "-march": armv8-a, armv8.7-a, armv8.8-a. Hoʻohui ʻia ka hoʻokō ʻana i nā hana C i kūkulu ʻia i loko o ka compiler (Intrinsics) no ka hoʻouka ʻana a me ka mālama ʻana i ka ʻikepili i ka hoʻomanaʻo, e pili ana i ka hoʻohana ʻana i nā ʻōlelo kuhikuhi ARM lōʻihi (ls9). Hoʻohui i ke kākoʻo no ka wikiwiki ʻana i nā hana memcpy, memmove a me ka memset me ka hoʻohana ʻana i ka mopsoption ARM extension.
  • Hoʻohui ʻia kahi mode nānā hou "-fsanitize = shadow-call-stack" (ShadowCallStack), i kēia manawa wale nō i loaʻa no ka hale hoʻolālā AArch64 a hana i ke kūkulu ʻana i ke code me ke koho "-ffixed-r18". Hāʻawi ke ʻano i ka pale ʻana i ke kākau ʻana i ka helu hoʻihoʻi mai kahi hana i ka wā e hoʻoheheʻe ʻia ka buffer ma ka waihona. ʻO ke kumu o ka pale ʻana, ʻo ia ka mālama ʻana i ka helu hoʻihoʻi ma kahi ʻāpana "aka" ʻokoʻa ma hope o ka hoʻololi ʻana i ka mana i kahi hana a kiʻi hou i kēia helu ma mua o ka haʻalele ʻana i ka hana.

Source: opennet.ru

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