Siideynta LLVM 13.0 compiler suite

Ka dib lix bilood oo horumarin ah, sii deynta mashruuca LLVM 13.0 ayaa la soo bandhigay - qalab ku habboon GCC (compiers, optimizers and code-generators) kaas oo u diyaariya barnaamijyada koodka dhexdhexaadka ah ee RISC-u eg tilmaamaha farsamada (mashiin macmal ah oo hooseeya oo leh nidaamka tayaynta heerar badan). Pseudocode-ka la soo saaray waxaa loo rogi karaa iyadoo la isticmaalayo isku-duwaha JIT si toos ah tilmaamaha mashiinka wakhtiga fulinta barnaamijka.

Horumarinta Clang 13.0:

  • Taageerada la hirgaliyay ee wicitaanada dabada ee dammaanad qaadka ah (waca subroutine dhamaadka shaqada, samaynta dib u soo noqoshada dabada haddii subroutine-ku is waco). Taageerada wicitaanada dabada ee dammaanadda leh waxaa bixiya sifada "[[clang :: musttail]]" ee ku jirta C++ iyo "__ sifo __((musttail))" gudaha C, oo loo isticmaalo bayaanka "soo celinta". Tilmaamku wuxuu kuu ogolaanayaa inaad hirgeliso hagaajinta adigoo geynaya koodka soo noqnoqoshada siman si loo badbaadiyo isticmaalka dulsaarka.
  • "Isticmaalka" cadeynta iyo fidinta qabiilku waxay taageero siisaa qeexida sifada qaabka C++11 iyadoo la isticmaalayo qaabka "[]".
  • Lagu daray calanka "-Wreserved-identifier" si uu u muujiyo digniin marka aad ku qeexdo aqoonsiga gaarka ah ee summada isticmaalaha.
  • Lagu daray "-Wunused-but-set-parameter" iyo "-Wunused-but-set-variable" calamada si ay u muujiyaan digniin haddii halbeeg ama doorsoome la dejiyay balse aan la isticmaalin.
  • Lagu daray "-Wnull-pointer-kala-goynta" calanka si loo soo saaro digniin haddii koodka laga yaabo inuu soo bandhigo dabeecad aan la qeexin sababtoo ah isticmaalka tilmaame null ee hawlgallada kala-goynta.
  • Waxaa lagu daray calanka "-fstack-usage" si loo soo saaro faylal kood kasta galka ".su" dheeraad ah oo ka kooban macluumaad ku saabsan cabbirka xirmooyinka xirmooyinka hawl kasta oo lagu qeexay faylka la farsamaynayo.
  • Nooc cusub oo wax soo saar ah ayaa lagu daray falanqeeyaha joogtada ah - "sarif-html", taas oo horseedaysa soo saarista warbixinnada isku mar ee qaababka HTML iyo Sarif. Lagu daray jeeg cusub oo allocClassWithName Marka la qeexo ikhtiyaarka "-analyzer-display-progress", wakhtiga falanqaynta ee hawl kasta ayaa la soo bandhigayaa. Falanqeeyaha smart pointer (alpha.cplusplus.SmartPtr) ayaa ku dhawaad ​​diyaar ah.
  • Awoodaha la xidhiidha taageerada OpenCL waa la balaariyay. Taageerada lagu daray kordhinta cusub cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields iyo __cl_clang_non_portable_kernel_param_types. Dhaqangelinta qeexida OpenCL 3.0 ayaa sii socotay. Marka loo eego C, qeexitaanka OpenCL 1.2 waxaa loo isticmaalaa si caadi ah ilaa nooc kale aan si cad loo dooran. C++, taageerada faylasha leh kordhinta ".clcpp" ayaa lagu daray.
  • Taageerada awaamiirta isbeddelka loop ("#pragma omp unrol" iyo "#pragma omp tile") ee lagu qeexay qeexitaanka OpenMP 5.1 ayaa la fuliyay.
  • Ikhtiyaarada lagu daray utility-qaab qabiil: SpacesInLineCommentPrefix si loo qeexo tirada boosaska ka hor faallooyinka, IndentAccessModifiers, LambdaBodyIndentation iyo PPIndentWidth si loo xakameeyo toosinta gelinta, tibaaxaha lambda iyo dardaaranka ka hor. Suurtagalnimada kala soocidda tirinta faylalka madaxa (SortIncludes) waa la ballaariyay. Taageero lagu daray qaabaynta faylasha JSON
  • Qayb weyn oo jeegag cusub ah ayaa lagu daray qaab qabiil.

Hal-abuurka muhiimka ah ee LLVM 13.0:

  • Waxaa lagu daray ikhtiyaarka "-ehcontguard" si loo isticmaalo tignoolajiyada CET (Windows Control-flow Enforcement Technology) si ay uga ilaaliso fulinta ka faa'iidaysiga la dhisay iyadoo la isticmaalayo farsamooyinka Barnaamijyada Soo-noqoshada (ROP) ee marxaladda maaraynta ka reeban.
  • Mashruucii tijaabinta-debuginfo waxa loo beddelay imtixaan-mashruuc-is-mashruuc waxaana loogu talagalay in lagu tijaabiyo qaybaha mashruucyo kala duwan, oo aan ku xaddidnayn macluumaadka cilladaha.
  • Nidaamku wuxuu bixiyaa taageero lagu dhisayo qaybo kala duwan, tusaale ahaan, mid leh yutiilitida, iyo kan kale oo leh maktabado loogu talagalay horumarinta.
  • Dhabarka dambe ee qaab dhismeedka AArch64, taageerada Armv9-A RME (Fidinta Maareynta Realm) iyo SME (kordhinta Matrix-ka-kordhinta) ayaa lagu hirgeliyay isku-duwaha.
  • Taageerada ISA V68/HVX ayaa lagu daray dhabarka danbe ee naqshadda Hexagon.
  • Dhabarka x86 wuxuu hagaajiyay taageerada AMD Zen 3 soo-saareyaasha.
  • Taageero lagu daray GFX1013 RDNA2 APU dhabarka dambe ee AMDGPU.
  • Libc++ waxay sii waddaa hirgelinta sifooyin cusub oo ah heerarka C++20 iyo C++2b, oo ay ku jiraan dhammaystirka maktabadda "fikradaha". Taageero lagu daray std :: nidaamka faylalka ee madal Windows ku salaysan MinGW. Faylasha madaxa , iyo waa la kala saaray. Xulashada dhismaha ee lagu daray LIBCXX_ENABLE_INCOMPLETE_FEATURES si loo joojiyo faylalka madaxa ee aan si buuxda loo hirgelin.
  • Awoodaha xiriiriyaha LLD waa la ballaariyay, kaas oo taageerada loogu talagalay soo-saareyaasha Big-endian Aarch64 la hirgeliyay, iyo dhabarka Mach-O ayaa la keenay xaalad u oggolaanaysa isku xirka barnaamijyada caadiga ah. Horumarin ay ku jirto ayaa loo baahan yahay si loogu xidho Glibc iyadoo la isticmaalayo LLD.
  • Adeegga lvm-mca (Machine Code Analyzer) waxa uu ku daray taageerada soo-saareyaasha u fulinaya hab-raacyada hab-raaca (tubbada superscalar), sida ARM Cortex-A55.
  • Debugger LLDB ee madal AArch64 waxa ay si buuxda u taageertaa Xaqiijinta Tilmaamaha, MTE (MemTag, Extension Memory Tagging) iyo diiwaanka SVE. Amarrada lagu daray oo kuu oggolaanaya inaad ku xidhid tags hawlgal kasta oo qoondaynta xusuusta oo aad habayso jeeg tilmaamayaasha marka la gelayo xusuusta, taas oo ay tahay in lagu xidho summada saxda ah.
  • Debugger-ka LLDB iyo afka hore ee luqadda Fortran- Flang ayaa lagu daray kulannada binary ee uu soo saaray mashruuca.

Source: opennet.ru

Add a comment