Siideynta LLVM 15.0 compiler suite

Ka dib lix bilood oo horumarin ah, sii deynta mashruuca LLVM 15.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.

Horumarka waaweyn ee Clang 15.0:

  • Nidaamyada ku saleysan qaab dhismeedka x86, calanka "-fzero-call-used-regs" ayaa lagu daray, kaas oo hubinaya in dhammaan diiwaannada CPU ee loo isticmaalo shaqada dib loogu dhigo eber ka hor inta aan laga soo celin xakamaynta shaqada. Doorashadani waxay kuu ogolaanaysaa inaad ka ilaaliso daadinta macluumaadka ee hawlaha oo aad hoos u dhigto tirada baloogyada ku habboon dhisidda qalabka ROP (Barnaamijka Soo-noqoshada) ee ka faa'iidaysiga qiyaastii 20%.
  • Kala soocida meelaynta xusuusta ee qaababka C code ayaa la hirgeliyay, taas oo adkeynaysa soo saarista xogta dhismayaasha haddii ay dhacdo ka faa'iidaysiga dayacanka. Randomization waa daar iyo dami iyadoo la isticmaalayo randomize_layout iyo no_randomize_layout sifooyinka, waxayna u baahan tahay dejinta abuur iyadoo la isticmaalayo "-frandomize-layout-seed" ama "-frandomize-layout-seed-file" calanka.
  • Lagu daray "-fstrict-flex-arrays=" calanka ” Marka loo dhigo 0 (default), qaybta ugu dambeysa ee qaab-dhismeedka leh array ayaa had iyo jeer loo farsameeyaa sidii array dabacsan, 1 - kaliya cabbirrada [], [0] iyo [1] ayaa loo farsameeyaa qaab dabacsanaan leh, 2 - cabbirrada kaliya [] iyo [0] waxaa loo farsameeyaa sida soo diyaari dabacsanaan leh.
  • Taageero tijaabo ah oo lagu daray C-sida luqadda HLSL (Luqadda Shader-ka Sare), oo loo isticmaalo DirectX qorista hadhka.
  • Lagu daray "-Warray-parameter" si looga digo ka-hortagga shaqooyinka ee leh caddaynta doodaha aan is-waafajin karin ee la xidhiidha jaangooyooyinka dhererka go'an iyo doorsoomayaasha.
  • La jaanqaadka MSVC oo la hagaajiyay. Taageero dheeri ah oo loogu talagalay "#pragma function" (ku-hawlgalayaasha waxay faraysaa inuu soo saaro wicitaan hawleed halkii uu ka ahaan lahaa ballaarinta khadka) iyo "#pragma alloc_text" (wuxuu qeexayaa magaca qaybta oo leh koodka shaqada) ee lagu bixiyo MSVC. Taageero lagu daray MSVC-ku habboon /JMC iyo calanka JMC.
  • Shaqadu waxay sii waddaa taageeridda heerarka C2X iyo C++23 mustaqbalka. Luqadda C, kuwan soo socda ayaa la fuliyaa: sifada noreturn, ereyada furaha been iyo run, nooca _BitInt(N) ee isku dhafka qoto dheer ee la bixiyay, *_WIDTH macros, horgalaha u8 ee xarfaha xarfaha UTF-8.

    C++, kuwan soo socda ayaa la fuliyaa: isku-darka moduleka, go'doominta ABI ee xubnaha shaqada, la amray bilawga firfircoonida doorsoomayaasha aan deegaanka ahayn ee cutubyada, hawl wadeennada tusmooyinka badan, auto(x), doorsoomayaal aan suugaan ahayn, goto iyo calaamado ku jira shaqooyinka lagu dhawaaqay inay yihiin constexpr , taxane baxsad ah oo xaddidan, oo lagu magacaabay jilayaasha baxsadka.

  • Awoodaha la xidhiidha taageerada OpenCL iyo OpenMP waa la balaariyay. Taageero lagu daray furitaanka CL cl_khr_subgroup_rotate
  • Qaab dhismeedka x86, ilaalinta ayaa lagu daray baylahda soo-saareyaasha ay sababto fulinta malo-awaalka ah ee tilmaamaha ka dib hawlgallada boodboodka ee shuruud la'aanta ah. Dhibaatadu waxay dhacdaa iyadoo ay ugu wacan tahay habayn hore oo hagitaan ah oo isla markiiba raacaya tilmaamaha laanta xusuusta (SLS, Speculation Line). Si loo suurtageliyo ilaalinta, doorashada "-mharden-sls=[midna|dhammaan|soo noqoshada|indirect-jmp]" ayaa la soo jeediyay.
  • Meelaha taageera kordhinta SSE2, nooca _Float16 ayaa lagu daray, kaas oo lagu daydo iyadoo la adeegsanayo nooca sabaynta ee kiiska taageero la'aanta tilmaamaha AVX512-FP16.
  • Lagu daray "-m [no-] rdpru" calanka si loo xakameeyo isticmaalka tilmaamaha RDPRU, oo lagu taageerayo soo-saareyaasha AMD Zen2.
  • Waxaa lagu daray calanka "-mfunction-return=thunk-extern" si uu uga ilaaliyo nuglaanta RETBLEED, kaas oo ka shaqeeya iyadoo lagu darayo tilmaamo isku xigxiga oo ka saaraya ku lug lahaanshaha habka fulinta mala-awaalka ah ee laamaha aan tooska ahayn.

Hal-abuurka muhiimka ah ee LLVM 15.0:

  • Taageero lagu daray Cortex-M85 CPU, Armv9-A, Armv9.1-A iyo Armv9.2-A architectures, Armv8.1-M PACBTI-M kordhinta.
  • Tijaabada dhabarka dambe ee DirectX ayaa lagu daray taas oo taageerta qaabka DXIL (DirectX Intermediate Language) ee loo isticmaalo hadhka DirectX. Dhabarka dambe waxa la damiyay iyadoo la cayimayo "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX" inta lagu guda jiro kulanka.
  • Libc++ waxay sii waddaa hirgelinta sifooyin cusub oo heerarka C++20 iyo C++2b, oo ay ku jiraan dhammaystirka hirgelinta maktabadda β€œqaabka” iyo nooca tijaabada ah ee la soo jeediyay ee maktabadda β€œkala duwanaanshaha”.
  • Dib u hagaajinta x86, PowerPC iyo naqshadaha RISC-V.
  • Awoodaha xiriiriyaha LLD iyo LLDB debugger waa la xoojiyey.

Source: opennet.ru

Add a comment