Ukukhutshwa kwe-LLVM 13.0 yokuhlanganisa suite

Emva kweenyanga ezintandathu zophuhliso, ukukhutshwa kweprojekthi ye-LLVM 13.0 yanikezelwa - i-toolkit ehambelana ne-GCC (abahlanganisi, izilungisi kunye neejenereyitha zekhowudi) eziqokelela iinkqubo zibe yi-bitcode ephakathi ye-RISC-njengemiyalelo yenyani (umatshini okumgangatho ophantsi onesixhobo inkqubo yokwandisa amanqanaba amaninzi). I-pseudocode eyenziweyo inokuguqulwa ngokusebenzisa i-JIT compiler kwimiyalelo yomatshini ngokuthe ngqo ngexesha lokwenziwa kweprogram.

Uphuculo kwiClang 13.0:

  • Inkxaso ephunyeziweyo yeefowuni eziqinisekisiweyo zomsila (ukubiza i-subroutine ekupheleni komsebenzi, ukwenza i-recursion yomsila ukuba i-subroutine iyazibiza ngokwayo). Inkxaso yeefowuni eziqinisekisiweyo zomsila ibonelelwa ngophawu "[[clang::musttail]]" kwi-C++ kunye ne-"__attribute__((imele))" kwi-C, esetyenziswe kwingxelo "yokubuyisela". Inqaku likuvumela ukuba uphumeze ulungelelwaniso ngokufaka ikhowudi kwi-flat iteration ukugcina ukusetyenziswa kwesitaki.
  • "usebenzisa" izibhengezo kunye nezandiso ze-clang zibonelela ngenkxaso yokuchaza iimpawu zesimbo se-C++11 kusetyenziswa i-"[[]]" ifomathi.
  • Kongezwe iflegi ethi "-Wreserved-identifier" ukubonisa isilumkiso xa izichazi ezibekelwe bucala zikhankanyiwe kwikhowudi yomsebenzisi.
  • Kongezwe i-"-Wunused-but-set-parameter" kunye ne "-Wunused-but-set-variable" iiflegi ukubonisa isilumkiso ukuba iparameter okanye uguqulo lubekiwe kodwa alusetyenziswanga.
  • Kongezwe iflegi ethi "-Wnull-pointer-subtraction" ukukhupha isilumkiso ukuba ikhowudi inokwazisa indlela yokuziphatha engachazwanga ngenxa yokusetyenziswa kwesalathi esingenanto kwimisebenzi yokuthabatha.
  • Kongezwe iflegi "-fstack-usage" ukuvelisa kwifayile yekhowudi nganye ifayile eyongezelelweyo ".su" equlethe ulwazi malunga nobungakanani bezakhelo zesitaki somsebenzi ngamnye ochazwe kwifayile elungiswayo.
  • Uhlobo olutsha lwemveliso yongezwe kwi-analyzer ye-static - "sarif-html", ekhokelela ekuveliseni iingxelo ngaxeshanye kwiifomathi ze-HTML kunye ne-Sarif. Kongezwe uqwalaselo olutsha lwe-allocClassWithName. Xa ucacisa inketho ethi "-analyzer-display-progress", ixesha lokuhlalutya lomsebenzi ngamnye liboniswa. Isihlalutyi sesalathisi esihlakaniphile (alpha.cplusplus.SmartPtr) sele silungile.
  • Izakhono ezinxulumene nenkxaso ye-OpenCL zandisiwe. Inkxaso eyongeziweyo yolwandiso olutsha cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields kunye __cl_clang_non_portable_kernel_param_types. Ukuphunyezwa kwenkcazo ye-OpenCL 3.0 iqhubekile. Kwi-C, i-OpenCL 1.2 specication isetyenziswa ngokungagqibekanga ngaphandle kokuba enye inguqulelo ikhethwe ngokucacileyo. Kwi-C ++, inkxaso yeefayile ezinolwandiso ".clcpp" yongezwe.
  • Inkxaso yemigaqo yotshintsho lwelophu (β€œ#pragma omp unrol” kunye β€œne#pragma omp tile”) echazwe kwinkcazo ye-OpenMP 5.1 iphunyeziwe.
  • Iinketho ezongeziweyo kusetyenziso lwe-clang-format: SpacesInLineCommentPrefix ukuchaza inani lezithuba phambi kwamazwana, i-IndentAccessModifiers, i-LambdaBodyIndentation kunye ne-PPIndentWidth ukulawula ulungelelwaniso lwamangeno, iintetho ze-lambda kunye nezikhokelo zangaphambili. Amathuba okuhlela ubalo lweefayile ezibhalwe kwiheader (SortIncludes) zandisiwe. Inkxaso eyongeziweyo yokufomatha iifayile ze-JSON.
  • Inxalenye enkulu yeetshekhi ezintsha zongezwe kwi-linter clang-tidy.

Izinto ezintsha eziphambili kwi-LLVM 13.0:

  • Yongeza i-"-ehcontguard" inketho yokusebenzisa iteknoloji ye-CET (i-Windows Control-flow Enforcement Technology) ukukhusela ngokusetyenziswa kwezinto ezisetyenzisiweyo ezakhiwe kusetyenziswa ubuchule beNkqubo yokuBuyisa (i-ROP) kwinqanaba lokuphatha ngaphandle.
  • Iprojekthi yovavanyo lwe-debuginfo iye yabizwa ngokuba yi-cross-project-test kwaye yenzelwe ukuvavanya amacandelo asuka kwiiprojekthi ezahlukeneyo, engaphelelanga kulwazi lolungiso lweempazamo.
  • Inkqubo yokuhlanganisa ibonelela ngenkxaso yokwakhiwa kwezabelo ezininzi, umzekelo, enye enezixhobo eziluncedo, kunye nezinye iilayibrari zabaphuhlisi.
  • Kwi-backend ye-architecture ye-AArch64, inkxaso ye-Armv9-A RME (i-Realm Management Extension) kunye ne-SME (i-Scalable Matrix Extension) izandiso ziphunyezwa kwi-assembler.
  • Inkxaso ye-ISA V68/HVX yongezwe kwi-backend ye-Hexagon architecture.
  • Umva we-x86 uphucule inkxaso yeeprosesa ze-AMD Zen 3.
  • Inkxaso eyongeziweyo ye-GFX1013 RDNA2 APU kwi-AMDGPU ngasemva.
  • I-Libc ++ iyaqhubeka nokuphumeza iimpawu ezintsha zemigangatho ye-C ++ 20 kunye ne-C ++ 2b, kubandakanywa nokugqitywa kwelayibrari "yeengcamango". Inkxaso eyongeziweyo ye-std ::inkqubo yefayile ye-MinGW-based Windows platform. Iifayile zeheader zahluliwe , Kwaye . Ukhetho lokwakha olongeziwe LIBCXX_ENABLE_INCOMPLETE_FEATURES ukuvala iifayile zeheader ezingaphunyezwanga ngokupheleleyo.
  • Izakhono ze-LLD linker ziye zandiswa, apho inkxaso ye-Big-endian Aarch64 processors iphunyeziwe, kwaye i-backend ye-Mach-O iye yaziswa kwimeko evumela ukudibanisa iinkqubo eziqhelekileyo. Ibandakanyiwe uphuculo olufunekayo ukuqhagamshela i-Glibc usebenzisa iLLD.
  • I-llvm-mca (i-Machine Code Analyzer) iluncedo longeze inkxaso kubaqhubekisi ezenza imiyalelo ngokulandelelana (kwi-oda ye-superscalar pipeline), njenge-ARM Cortex-A55.
  • I-LLDB debugger yeqonga le-AArch64 libonelela ngenkxaso epheleleyo yoQinisekiso lweSikhombisi, i-MTE (i-MemTag, iMemory Tagging Extension) kunye neerejista ze-SVE. Imiyalelo eyongeziweyo ekuvumela ukuba ubophe iithegi kumsebenzi ngamnye wokwabiwa kwememori kwaye ulungelelanise ukukhangela kwesalathisi xa ufikelela kwimemori, ekufuneka inxulunyaniswe nethegi echanekileyo.
  • I-LLDB debugger kunye ne-frontend yolwimi lwe-Fortran-Flang zongezwe kwiindibano zokubini eziveliswe yiprojekthi.

umthombo: opennet.ru

Yongeza izimvo