Sakin GCC 12 compiler suite

Bayan shekara guda na haɓakawa, an fitar da GCC 12.1 mai haɗawa kyauta, mafi mahimmanci na farko a sabon reshe na GCC 12.x. Dangane da sabon tsarin lambar lambar saki, an yi amfani da sigar 12.0 a cikin tsarin ci gaba, kuma jim kaɗan kafin fitowar GCC 12.1, reshen GCC 13.0 ya riga ya rabu, wanda a kan sa babban sakin na gaba, GCC 13.1, zai yi. a kafa. A ranar 23 ga Mayu, aikin zai yi bikin cika shekaru 35 da kafa bugu na farko na GCC.

Babban canje-canje:

  • Ƙara goyon baya ga tsarin gyara kuskuren CTF (Ƙaramin Nau'in Tsarin), wanda ke ba da ƙaramin ajiya na bayanai game da nau'in C, haɗin kai tsakanin ayyuka da alamun lalata. Lokacin da aka saka a cikin abubuwan ELF, tsarin yana ba da damar amfani da teburin halayen EFL don guje wa kwafin bayanai.
  • Goyon bayan tsarin ma'ajin bayanai na "STABS", wanda aka ƙirƙira a cikin 1980s, an soke shi.
  • Aiki yana ci gaba da faɗaɗa tallafi don ƙa'idodin C2X da C++23 na gaba don harsunan C da C++. Misali, an ƙara goyan bayan furcin “idan consteval”; an ba da izinin amfani da atomatik a cikin muhawarar aiki ("f(auto(g()))"); an ba da izinin amfani da masu canji na zahiri, goto da lakabi a cikin ayyukan da aka ayyana azaman constexpr; ƙarin goyon baya ga ma'aikatan ma'aikatan index na multidimensional[]; in, don da canzawa, an faɗaɗa ƙarfin tubalan farawa ("don (amfani da T = int; T e: v)").
  • Babban ɗakin karatu na C++ ya inganta tallafi ga sassan gwaji na ma'aunin C++20 da C++23. Ƙara goyon baya don std :: motsi_only_function, , std :: asali_string :: girman_da_overwrite, , da std :: kira_r. An ba da izini don amfani da std :: musamman_ptr, std :: vector, std :: asali_string, std :: zaɓi da std :: bambance-bambance a cikin ayyukan constexpr.
  • Forran frontend yana ba da cikakken goyan baya ga ƙayyadaddun TS 29113, wanda ke bayyana iyawa don tabbatar da ɗaukar hoto tsakanin lambar Fortran da C.
  • Ƙara goyon baya ga __builtin_shufflevector(vec1, vec2, index1, index2, ...) tsawo da aka ƙara a baya zuwa Clang, wanda ke ba da kira guda ɗaya don yin shuffle na gama gari da shuffle ayyuka.
  • Lokacin amfani da matakin ingantawa na "-O2", ana kunna vectorization ta tsohuwa (-ftree-vectorize da -fvect-cost-model=hanyoyi masu rahusa suna kunna). Samfurin arha mai arha yana ba da damar haɓakawa kawai idan lambar vector zata iya maye gurbin lambar sikeli gaba ɗaya ana ɓarna.
  • An ƙara yanayin "-ftrivial-auto-var-init" don ba da damar fara bayyana masu canji a kan tari don bin diddigin al'amura da kuma toshe raunin da ke da alaƙa da amfani da masu canji mara fahimta.
  • Don harsunan C da C++, an ƙara ginanniyar aikin __builtin_dynamic_object_size don tantance girman abu, mai dacewa da irin wannan aiki daga Clang.
  • Don harsunan C da C++, an ƙara goyan bayan sifa "babu samuwa" (misali, zaku iya yiwa ayyukan da zasu haifar da kuskure idan kuna ƙoƙarin amfani da su).
  • Don harsunan C da C++, an ƙara goyan bayan umarnin aiwatarwa "#elifdef" da "#elifndef".
  • Ƙara "-Wbidi-chars" tuta don nuna gargadi idan an yi amfani da haruffan UTF-8 ba daidai ba, yana canza tsarin da aka nuna rubutun bidirection.
  • Ƙara tuta "-Warray-compare" don nuna gargaɗi lokacin ƙoƙarin kwatanta operands guda biyu waɗanda ke nufin tsararraki.
  • Aiwatar da ka'idodin OpenMP 5.0 da 5.1 (Open Multi-Processing), waɗanda ke ayyana API da hanyoyin yin amfani da hanyoyin shirye-shirye masu kama da juna akan tsarin multi-core da matasan (CPU+GPU/DSP) tare da haɗin ƙwaƙwalwar ajiya da raka'a vectorization (SIMD) , ya ci gaba.
  • Ingantattun aiwatar da ƙayyadaddun ƙayyadaddun shirye-shirye na OpenACC 2.6, wanda ke bayyana kayan aikin sauke ayyuka akan GPUs da na'urori na musamman kamar NVIDIA PTX.
  • Taimako don ƙarin umarni Intel AVX86-FP512 da nau'in _Float16 an ƙara su zuwa ƙarshen tsarar lambar don gine-ginen x16.
  • Don tsarin gine-ginen x86, an ƙara kariya daga lahani a cikin na'urori masu sarrafawa da suka haifar da hasashe na aiwatar da umarni bayan ayyukan tsalle-tsalle marasa ƙa'ida. Matsalar tana faruwa ne saboda aiwatar da umarni da wuri nan da nan bin umarnin reshe a cikin ƙwaƙwalwar ajiya (SLS, Hasashen Layi Madaidaici). Don ba da damar kariya, zaɓin “-mharden-sls” an ba da shawarar.
  • An ƙara gano amfani da mabambantan da ba a san su ba zuwa ga na'urar nazari na gwaji. Ƙara goyon baya na farko don nazarin lambar taro a cikin abubuwan da aka saka na layi. Ingantattun bin diddigin ƙwaƙwalwar ajiya. An sake rubuta lambar don sarrafa maganganun sauyawa.
  • An ƙara sabbin kira guda 30 zuwa libgccjit, ɗakin karatu da aka raba don shigar da janareta na lamba cikin wasu matakai da amfani da shi don tattara lambar bytecode zuwa lambar injin.
  • An ƙara goyan bayan tsarin CO-RE (Compile Sau ɗaya - Gudun Ko'ina) zuwa bangon baya don ƙirƙirar bytecode BPF, wanda ke ba ku damar tattara lambar shirye-shiryen eBPF don kwaya ta Linux sau ɗaya kawai kuma amfani da loda na musamman na duniya wanda ya dace da ɗora Kwatancen shirin zuwa kernel na yanzu da Tsarin Nau'in BPF). CO-RE yana magance matsalar ɗaukar nauyin shirye-shiryen eBPF da aka haɗa, waɗanda a baya za a iya amfani da su kawai a cikin sigar kernel ɗin da aka haɗa su, tunda matsayin abubuwa a cikin tsarin bayanai yana canzawa daga sigar zuwa sigar.
  • Ƙarshen RISC-V yana ƙara goyan baya don sabon umarni saitin kari na gine-ginen zba, zbb, zbc da zbs, da kuma kari na ISA don vector da scalar cryptographic ayyuka. Ta hanyar tsoho, an ba da goyan baya ga ƙayyadaddun RISC-V ISA 20191213. An ƙara tuta -mtune=thead-c906 don ba da damar ingantawa ga muryoyin T-HEAD c906.
  • An ƙara tallafi don nau'in __int128_t/integer(nau'i = 16) zuwa ƙarshen tsarar lambar don AMD GPUs dangane da microarchitecture na GCN. Yana yiwuwa a yi amfani da har zuwa 40 ƙungiyoyin aiki a kowace naúrar kwamfuta (CU) da kuma har zuwa 16 koyarwa gaban (wavefront, saitin zaren da aka kashe a layi daya ta hanyar SIMD Engine) kowace kungiya. A baya can, gefen umarni ɗaya kawai a kowace CU an yarda.
  • NVPTX baya, wanda aka tsara don samar da lamba ta amfani da tsarin tsarin koyarwa na NVIDIA PTX (Parallel Thread Execution), ya kara da ikon yin amfani da tutocin "-march", "-mptx" da "-march-map". Tallafin da aka aiwatar don PTX ISA sm_53, sm_70, sm_75 da sm_80. Tsoffin gine-gine shine sm_30.
  • A cikin bangon baya don masu sarrafawa na PowerPC / PowerPC64 / RS6000, an sake rubuta aiwatar da ayyukan ginanniyar. Ayyukan da aka gina a ciki __builtin_get_texasr, __builtin_get_texasru, __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr, __builtin_set_texasr, __builtin_set_tfhar da __builtin_set.
  • Taimako don Arm Ampere-64 (-mcpu / -mtune ampere1), Arm Cortex-A1 (cortex-a510), Arm Cortex-A510 (cortex-a710) da Arm Cortex-X710 (cortex- x2). Ƙara goyon baya don sababbin zaɓuɓɓukan gine-gine na ARMv2 don amfani tare da zaɓi na "-march": armv8-a, armv8.7-a, armv8.8-a. Ƙara aiwatar da ayyukan C da aka gina a cikin mai tarawa (Intrinsics) don ɗaukar atomatik da adana bayanai zuwa ƙwaƙwalwar ajiya, dangane da amfani da tsawaita umarnin ARM (ls9). Ƙara tallafi don haɓaka ayyukan memcpy, memmove da memset ta amfani da tsawaita ARM na mopsoption.
  • An ƙara sabon yanayin dubawa "-fsanitize=shadow-call-stack" (ShadowCallStack), wanda a halin yanzu yana samuwa kawai don gine-ginen AArch64 kuma yana aiki lokacin gina lambar tare da zaɓin "-ffixed-r18". Yanayin yana ba da kariya daga sake rubuta adireshin dawowa daga wani aiki a yayin da buffer ya mamaye tari. Ma'anar kariyar ita ce adana adireshin dawowa a cikin tari na "inuwa" daban bayan canja wurin sarrafawa zuwa aiki da dawo da wannan adireshin kafin fita aikin.

source: budenet.ru

Add a comment