Kutulutsidwa kwa LLVM 13.0 compiler suite

Pambuyo pa miyezi isanu ndi umodzi ya chitukuko, kutulutsidwa kwa pulojekiti ya LLVM 13.0 kunaperekedwa - chida chogwirizana ndi GCC (compilers, optimizers ndi code generator) chomwe chimasonkhanitsa mapulogalamu mu bitcode yapakatikati ya RISC-monga malangizo enieni (makina otsika omwe ali ndi Multilevel optimization system). Pseudocode yopangidwa ikhoza kusinthidwa pogwiritsa ntchito JIT compiler kukhala malangizo amakina mwachindunji panthawi yokonza pulogalamu.

Kusintha kwa Clang 13.0:

  • Thandizo lokhazikitsidwa pamayimbidwe otsimikizika a mchira (kuyitana kagawo kakang'ono kumapeto kwenikweni kwa ntchito, kupanga kubwereza kwa mchira ngati subroutine imadzitcha yokha). Thandizo pamayimbidwe otsimikizika amchira amaperekedwa ndi "[[clang::musttail]]" mawonekedwe mu C++ ndi "__attribute__((musttail))" mu C, ogwiritsidwa ntchito pofotokoza "kubwerera". Mawonekedwewa amakulolani kuti mugwiritse ntchito kukhathamiritsa mwa kuyika ma code munjira yokhazikika kuti musunge ma stack.
  • "kugwiritsa ntchito" kulengeza ndi kukulitsa kwa clang kumathandizira kufotokozera mawonekedwe a C++11 pogwiritsa ntchito "[[]]" mtundu.
  • Onjezani mbendera ya "-Wreserved-identifier" kuti muwonetse chenjezo mukamatchula zozindikiritsa zosungidwa mu code ya ogwiritsa.
  • Onjezani mbendera "-Wunused-but-set-parameter" ndi "-Wunused-but-set-variable" mbendera kuti awonetse chenjezo ngati chizindikiro kapena kusintha kwakhazikitsidwa koma osagwiritsidwa ntchito.
  • Anawonjezera mbendera ya "-Wnull-pointer-subtraction" kuti apereke chenjezo ngati codeyo ingayambitse khalidwe losadziwika chifukwa chogwiritsa ntchito null pointer pochotsa.
  • Onjezani mbendera ya "-fstack-usage" kuti pafayilo iliyonse pakhale fayilo yowonjezera ".su" yokhala ndi chidziwitso chokhudza kukula kwa mafelemu a stack pa ntchito iliyonse yofotokozedwa mufayilo yomwe ikukonzedwa.
  • Mtundu watsopano wotuluka wawonjezedwa ku static analyzer - "sarif-html", zomwe zimatsogolera kutulutsa malipoti nthawi imodzi mumitundu ya HTML ndi Sarif. Onjezani cheke chatsopano cha allocClassWithName. Pofotokoza njira ya "-analyzer-display-progress", nthawi yowunikira ntchito iliyonse ikuwonetsedwa. The smart pointer analyzer (alpha.cplusplus.SmartPtr) yatsala pang'ono kukonzeka.
  • Maluso okhudzana ndi chithandizo cha OpenCL awonjezedwa. Zowonjezera zothandizira zowonjezera zatsopano cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields ndi __cl_clang_non_portable_kernel_param_types. Kukhazikitsidwa kwa mfundo za OpenCL 3.0 kwapitilira. Kwa C, mawonekedwe a OpenCL 1.2 amagwiritsidwa ntchito mwachisawawa pokhapokha ngati mtundu wina wasankhidwa bwino. Kwa C ++, chithandizo cha mafayilo omwe ali ndi ".clcpp" yawonjezedwa.
  • Thandizo pamalangizo akusintha kwa loop ("#pragma omp unrol" ndi "#pragma omp tile") zofotokozedwa mu OpenMP 5.1 zakhazikitsidwa.
  • Zosankha zowonjezeredwa pazogwiritsa ntchito mawonekedwe a clang: SpacesInLineCommentPrefix kutanthauzira kuchuluka kwa mipata musanapereke ndemanga, IndentAccessModifiers, LambdaBodyIndentation ndi PPIndentWidth kuti muwongolere masanjidwe a zolembera, mawu a lambda ndi malangizo otsogolera. Kuthekera kwa kusanja kuwerengetsa kwa mafayilo amutu (SortIncludes) kwakulitsidwa. Thandizo lowonjezera pakukonza mafayilo a JSON.
  • Gawo lalikulu la macheke atsopano awonjezedwa ku linter clang-tidy.

Zatsopano zazikulu mu LLVM 13.0:

  • Anawonjezera njira ya "-ehcontguard" yogwiritsira ntchito teknoloji ya CET (Windows Control-flow Enforcement Technology) kuti muteteze ku zochitika zomwe zimamangidwa pogwiritsa ntchito njira za Return-Oriented Programming (ROP) pa siteji yogwiritsira ntchito.
  • Pulojekiti ya debuginfo-test yasinthidwanso kuti iyese ma projekiti osiyanasiyana, osati kungochotsa zambiri.
  • Dongosolo la msonkhano limapereka chithandizo chomangira magawo angapo, mwachitsanzo, imodzi yokhala ndi zofunikira, ndipo inayo yokhala ndi malaibulale kwa opanga.
  • Kumbuyo kwa zomangamanga za AArch64, kuthandizira kwa Armv9-A RME (Realm Management Extension) ndi SME (Scalable Matrix Extension) kumayendetsedwa mu assembler.
  • Thandizo la ISA V68/HVX lawonjezeredwa kumbuyo kwa zomangamanga za Hexagon.
  • The x86 backend yathandizira bwino mapurosesa a AMD Zen 3.
  • Thandizo lowonjezera la GFX1013 RDNA2 APU ku AMDGPU backend.
  • Libc ++ ikupitirizabe kugwiritsa ntchito zinthu zatsopano za C++20 ndi C++2b, kuphatikizapo kutsiriza laibulale ya "malingaliro". Thandizo lowonjezera la std ::mafayilo a nsanja ya Windows yochokera ku MinGW. Mafayilo amutu , ndi amasiyanitsidwa. Njira yowonjezerera ya LIBCXX_ENABLE_INCOMPLETE_FEATURES kuti muyimitse mafayilo amutu osagwira ntchito mokwanira.
  • Kuthekera kwa cholumikizira cha LLD kwakulitsidwa, momwe chithandizo cha mapurosesa a Big-endian Aarch64 chimakhazikitsidwa, ndipo Mach-O backend yabweretsedwa ku boma lomwe limalola kulumikiza mapulogalamu okhazikika. Zosintha zomwe zikufunika kuti mulumikizane ndi Glibc pogwiritsa ntchito LLD.
  • Chida cha llvm-mca (Machine Code Analyzer) chawonjezera chithandizo kwa mapurosesa omwe amatsatira malangizo motsatana (mu-order superscalar pipeline), monga ARM Cortex-A55.
  • LLDB debugger ya nsanja ya AArch64 imapereka chithandizo chonse cha Kutsimikizika kwa Pointer, MTE (MemTag, Memory Tagging Extension) ndi zolembera za SVE. Malamulo owonjezera omwe amakulolani kuti mumange ma tag ku ntchito iliyonse yogawa kukumbukira ndikukonzekera cheke cha pointer mukalowa kukumbukira, zomwe ziyenera kulumikizidwa ndi tag yolondola.
  • LLDB debugger ndi kutsogolo kwa chinenero cha Fortran - Flang awonjezedwa ku misonkhano ya binary yopangidwa ndi polojekitiyi.

Source: opennet.ru

Kuwonjezera ndemanga