Rakirina berhevoka berhevkarê LLVM 13.0

Piştî şeş mehên pêşveçûnê, serbestberdana projeya LLVM 13.0 hate pêşkêş kirin - amûrek lihevhatî ya GCC (berhevkar, optimîzator û hilberînerên kodê) ku bernameyan di bitkoda navîn a rêwerzên virtual yên mîna RISC-ê de berhev dike (makîneyek virtual ya nizm bi pergala optimîzasyona pir-astî). Pseudokoda hatî çêkirin dikare bi karanîna berhevkarek JIT-ê rasterast di dema pêkanîna bernameyê de li rêwerzên makîneyê were veguheztin.

Pêşveçûnên di Clang 13.0 de:

  • Piştgiriya bicîhkirî ji bo bangên dûvikê garantîkirî (li dawiya fonksiyonê gazîkirina binavberekê, heke jêrrûtîn gazî xwe bike dûvikek çêdike). Piştgiriya ji bo bangên dûvikê garantîkirî ji hêla taybetmendiya "[[clang::musttail]]" di C++ de û "__attribute__(((musttail))"" di C de, ku di daxuyaniyek "vegerê" de tê bikar anîn, tê peyda kirin. Taybetmendî dihêle hûn bi danîna kodê di nav dubarekirinek guncan de xweşbîniyan bicîh bikin da ku xerckirina stakê xilas bike.
  • Daxuyaniyên "bikaranîna" û pêvekên klangê ji bo diyarkirina taybetmendiyên şêwaza C++11 bi karanîna forma "[[]]" piştgirî peyda dikin.
  • Ala "-Wreserved-identifier" lê zêde kir ku gava ku hûn di koda bikarhêner de nasnameyên veqetandî diyar dikin hişyariyek nîşan bide.
  • Alên "-Wunused-but-set-parameter" û "-Wunused-but-set-variable" hatin zêdekirin da ku heke pîvanek an guhêrbarek were danîn lê neyê bikar anîn hişyariyek nîşan bide.
  • Alaya "-Wnull-pointer-subtraction" lê zêde kir da ku hişyariyek bide heke kod dibe ku tevgerek nediyar destnîşan bike ji ber karanîna nîşankerek betal di operasyonên jêderxistinê de.
  • Alaya "-fstack-usage" lê zêde kir da ku ji bo her pelê kodê pelek ".su" ya pêvek a ku ji bo her fonksiyonek ku di pelê hatî hilberandin de hatî destnîşan kirin agahdariya mezinahiya çarçoveyên stikê vedihewîne.
  • Cûreyek encamek nû li analîzkera statîk - "sarif-html" hate zêdekirin, ku rê li ber afirandina raporên hevdemî di HTML û Sarif de vedike. Kontrola allocClassWithName ya nû lê zêde kir. Dema ku vebijarka "-analyzer-display-pêşveçûn" tête diyar kirin, dema analîzkirina her fonksiyonê tê xuyang kirin. Analîzatora nîşankera jîr (alpha.cplusplus.SmartPtr) hema hema amade ye.
  • Kapasîteyên ku bi piştgiriya OpenCL re têkildar in hatine berfireh kirin. Piştgiriyek ji bo pêvekên nû cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields û __cl_clang_non_portable_kernel_param_types zêde kir. Pêkanîna taybetmendiya OpenCL 3.0 berdewam kir. Ji bo C, taybetmendiya OpenCL 1.2 ji hêla xwerû ve tê bikar anîn heya ku guhertoyek din bi eşkere neyê hilbijartin. Ji bo C++, piştgirî ji bo pelên bi dirêjkirina ".clcpp" hate zêdekirin.
  • Piştgiriya ji bo rêwerzên veguheztina loop ("#pragma omp unrol" û "#pragma omp tile") ku di taybetmendiya OpenMP 5.1 de hatine destnîşan kirin, hate bicîh kirin.
  • Vebijarkên lêzêdekirî li kargêriya clang-format: SpacesInLineCommentPrefix ji bo danasîna hejmara ciyên berî şîroveyan, IndentAccessModifiers, LambdaBodyIndentation û PPIndentWidth ji bo kontrolkirina hevrêziya navnîşan, biwêjên lambda û rêwerzên pêş-processor. Derfetên ji bo rêzkirina hejmartina pelên sernavê (SortIncludes) hatine berfireh kirin. Ji bo formatkirina pelên JSON piştgirî zêde kir.
  • Parçeyek mezin a kontrolên nû li lingê clang-tidy hatine zêdekirin.

Nûvekirinên sereke di LLVM 13.0 de:

  • Vebijarka "-ehcontguard" lê zêde kir ku teknolojiya CET (Teknolojiya Pêkanîna Kontrol-herikê ya Windows-ê) bikar bîne da ku li dijî cîbicîkirina îstismarên ku bi karanîna teknîkên Bernameya Bernameya Veger-Oriented (ROP) hatine çêkirin di qonaxa îstîsnayê de biparêze.
  • Projeya debuginfo-testê hate guheztin û navê ceribandinên cross-project-ê hate kirin û ji bo ceribandina pêkhateyên ji projeyên cihêreng hatî çêkirin, ne bi agahdariya xeletkirinê re sînorkirî ye.
  • Pergala meclîsê ji bo avakirina gelek dabeşan piştgirî peyda dike, mînakî, yek bi karûbar, û ya din bi pirtûkxane ji bo pêşdebiran.
  • Di paşîn de ji bo mîmariya AArch64, piştgirî ji bo dirêjkirina Armv9-A RME (Pêvekkirina Rêvebiriya Herêmê) û SME (Pêvekkirina Matrixê ya Scalable) di berhevkerê de tête bicîh kirin.
  • Piştgiriya ji bo ISA V68 / HVX ji bo mîmariya Hexagonê li piştê hatî zêdekirin.
  • Piştgiriya x86 ji bo pêvajoyên AMD Zen 3 piştgirî çêtir kiriye.
  • Piştgiriya GFX1013 RDNA2 APU li pişta AMDGPU zêde kir.
  • Libc++ pêkanîna taybetmendiyên nû yên standardên C++20 û C++2b berdewam dike, tevî temamkirina pirtûkxaneya "têgînan". Piştgiriya std:: pergala pelan ji bo platforma Windows-ê ya MinGW-ê zêde kir. Pelên sernavê , û ji hev têne veqetandin. Vebijarka çêkirinê LIBCXX_ENABLE_INCOMPLETE_FEATURES zêde kir da ku pelên sernavê yên bi fonksiyonên bi tevahî nehatine bicîh kirin neçalak bike.
  • Kapasîteyên girêdana LLD-ê hatine berfireh kirin, ku tê de piştgirî ji bo pêvajoyên Big-endian Aarch64 tête bicîh kirin, û paşiya Mach-O gihîştiye rewşek ku destûrê dide girêdana bernameyên birêkûpêk. Pêşveçûnên ku ji bo girêdana Glibc bi karanîna LLD re hewce ne hene.
  • Vebijêrka llvm-mca (Analîzatora Kodê ya Makîneyê) piştgirî ji bo pêvajoyên ku bi rêzê talîmatan pêk tînin (bi rêza lûleya superscalar), wek ARM Cortex-A55, zêde kiriye.
  • Debugger LLDB ji bo platforma AArch64 piştgirîya bêkêmasî ji bo Nasnameya Pointer, MTE (MemTag, Berfirehkirina Nîşankirina Bîrê) û tomarên SVE peyda dike. Fermanên zêde kirin ku dihêle hûn etîketan bi her operasyona veqetandina bîranînê ve girêbidin û dema ku bigihîjin bîranînê, ku divê bi etîketa rast re têkildar be, kontrolek nîşankerê saz bikin.
  • Debugger LLDB û pêşiya ji bo zimanê Fortran - Flang li meclîsên binary ên ku ji hêla projeyê ve hatî çêkirin hatine zêdekirin.

Source: opennet.ru

Add a comment