Siideynta LLVM 16.0 compiler suite

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

  • Heerka C ++/ObjC++ ee caadiga ah waa gnu ++17 (horey gnu ++14), taas oo macnaheedu yahay astaamaha C ++ 17 oo leh kordhinta GNU ayaa lagu taageerayaa default. Si aad u soo celiso dhaqankii hore, waxaad isticmaali kartaa "-std=gnu++14" doorashada.
  • Tilmaamo horumarsan oo la fuliyay oo la xidhiidha heerka C++20:
    • Shaqaale xubin gaar ah oo shuruudi ku xidhan tahay,
    • qabashada xirmooyinka habaysan ee hawlaha lambda,
    • Hawlwadeenka sinnaanta ee tibaaxaha,
    • Ikhtiyaarka ah in laga tago ereyga ereyga furaha ah xaaladaha qaarkood,
    • Bilawga wadarta saxda ah ee qawlka ("Aggr(val1, val2)").
  • Sifooyinka lagu qeexay heerka C++2b mustaqbalka waa la hirgeliyay:
    • Waa la oggol yahay in la dhigo summada dhammaadka tibaaxaha isku dhafan,
    • hawlwadeenka taagan (),
    • hawlwadeenka taagan[],
    • Waafaqsanaanta nooca char8_t waa la hubiyaa,
    • Kala duwanaanshaha xarfaha loo oggol yahay isticmaalka "\N{...}" waa la ballaariyay
    • Waxaa lagu daray awoodda isticmaalka doorsoomayaasha lagu dhawaaqay inay yihiin "static constexpr" ee hawlaha lagu sheegay constexpr.
  • Tilmaamaha lagu qeexay mustaqbalka C-standard C2x waa la fuliyay:
    • Si loo joojiyo digniinta "-Wunused-label", sifada "[[malaha_la isticmaalin]]" waa la ogol yahay in lagu dabaqo calaamadaha
    • Waa la oggol yahay in lagu dhejiyo calaamado meel kasta oo ka mid ah tibaaxaha isku dhafan,
    • Nooca iyo nooca_aan u dhigmin hawl wadeenada lagu daray,
    • Nooc cusub oo nullptr_t ah iyo nullptr joogto ah si loo qeexo tilmaameyaal aan waxba lahayn oo u rogi kara nooc kasta oo tilmaame ah oo ka dhigan kala duwanaanshiyaha NULL oo aan ku xidhnayn noocyada kala duwanaanshaha iyo faaruqa*.
    • Habka C2x, wacitaanka macro va_start oo wata tiro doorsooma oo dood ah (variadic) waa la oggol yahay.
  • Qaababka u hoggaansanaanta C99, C11, iyo C17, xulashooyinka caadiga ah "-Wimplicit-function-claration" iyo "-Wimplicit-int" hadda waxay soo saaraan qalad halkii digniinta.
  • Isticmaalka aan tooska ahayn ee "Void *" (tusaale "Vid func(void *p) {*p; }") ee qaabka C++ hadda waxay abuurtaa qalad, la mid ah ISO C++, GCC, ICC iyo MSVC.
  • Ku qeexida meelaha loo yaqaan 'bitfields' sida hawlgallada tilmaamaha (tusaale "__asm ​​​​{mov eax, s.bf}") ee ku jira xirmooyinka khadadka khadka ee qaabka Microsoft hadda waxay abuurtaa qalad.
  • Lagu daray ogaanshaha jiritaanka qaabab kala duwan iyo ururo leh magacyo isku mid ah qaybo kala duwan.
  • Awoodaha la xidhiidha taageerada OpenCL iyo OpenMP waa la balaariyay. Baadhitaannada la hagaajiyay ee qaababka C++ ee lagu isticmaalo doodaha kernel OpenCL. Taageerada xannibaadda safka oo la hagaajiyay ee AMDGPU. Sifada nounwind waxa si maldahan loogu daray dhammaan hawlaha. Taageerada la hagaajiyay ee hawlaha la dhisay.
  • Lagu daray awoodda isticmaalka CLAG_CRASH_DIAGNOSTICS_DIR doorsoomayaasha deegaanka si loo qeexo hagaha ay ku kaydsan tahay xogta ogaanshaha shilalka.
  • Taageerada Unicode ayaa lagu cusboonaysiiyay sifada Unicode 15.0. Calaamadaha xisaabta qaarkood ayaa loo oggol yahay tilmaamayaasha, sida "β‚Š" (tusaale, "laba xβ‚–β‚Šβ‚").
  • Taageero dheeri ah oo loogu talagalay soo dejinta faylal badan oo qaabeyn ah (faylalka qaabeynta caadiga ah ayaa marka hore la raray, ka dibna kuwa lagu qeexay calanka "-config=", oo hadda la cayimi karo dhowr jeer). Beddelay habka dejinta caadiga ah ee faylasha qaabeynta: clang waxay isku daydaa inay marka hore rarayso faylka - .cfg, haddii aan la helinna waxay isku daydaa inay ku shubto laba fayl .cfg iyo .cfg. Si aad u damiso rarka qaabeynta galka sida caadiga ah, calanka "--no-default-config" ayaa lagu daray.
  • Si loo hubiyo dhismayaal soo noqnoqon kara, waxa suurtagal ah in lagu beddelo qiimaha taariikhda iyo wakhtiga ee __DATE__, __TIME__ iyo __TIMESTAMP__ macros wakhtiga lagu cayimay doorsoomiyaha deegaanka SOURCE_DATE_EPOCH.
  • Si loo hubiyo joogitaanka hawlaha la dhisay (builtin) ee loo isticmaali karo macnaha guud ee joogtada ah, makro "__has_constexpr_builtin" ayaa lagu daray.
  • Lagu daray calanka cusub ee isku-dubbaridka "-fcoro-aligned-allocation" ee qoondaynta jir dhiska ee toosan.
  • Calanku "-fstrict-flex-arrays=" wuxuu hirgeliyaa taageerada heerka saddexaad ee hubinta curiyayaasha arayga dabacsan ee qaab-dhismeedka Heerka seddexaad, kaliya cabbirka "[]" (tusaale, "int b[]") ayaa loola dhaqmaa sidii qalab dabacsan, laakiin cabbirka "[0]" (tusaale, "int b[0]") ma ahan.
  • Lagu daray calanka "-fmodule-output" si uu awood ugu yeesho qaabka isku-dubbaridka hal-waji ee cutubyada caadiga ah ee C++.
  • Lagu daray "-Rpass-analysis=stack-frame-layout" qaab si ay u caawiso ogaanshaha mashaakilaadka qaabka qaab-dhismeedka.
  • Lagu daray sifo cusub __sifo __((target_version("cpu_features")))) oo la kordhiyey shaqaynta sifada____((target_clones("cpu_features1","cpu_features2",...)))) si loo xusho noocyo gaar ah oo sifooyinka ay bixiso AArch64 CPUs
  • Qalabka ogaanshaha waa la ballaariyay:
    • Digniin dheeri ah "-Wsingle-bit-bitfield-constant-constant-conversion" si loo ogaado go'id daahsoon marka lagu meeleynayo mid ka mid ah goob-biteedka hal-bit ee saxeexan.
    • Baarista doorsoomayaasha constexpr ee aan la bilaabin waa la ballaariyay.
    • Lagu daray digniinta "-Wcast-function-type-sight" iyo "-Wincomompatible-function-pointer-types-strict" digniinaha si loo aqoonsado dhibaatooyinka iman kara ee nooca shaqada.
    • Lagu daray ogaanshaha isticmaalka magacyada moduleka khaldan ama kaydsan ee blocks dhoofinta.
    • Ogaanshaha horumarsan ee ereyada furaha "auto" ee maqan ee qeexitaannada.
    • Dhaqangelinta digniinta "-Winteger-overflow" waxay ku dartay hubinta xaalado dheeraad ah oo horseedaya qulqulka.
  • Taageerada la hirgeliyay ee hab-dhismeedka hab-dhismeedka tilmaanta LoongArch (-march=loongarch64 ama -march=la464),loo adeegsaday Loongson 3 5000 soo-saareyaal iyo hirgelinta RISC ISA cusub, oo la mid ah MIPS iyo RISC-V.

Hal-abuurka muhiimka ah ee LLVM 16.0:

  • Koodhka LLVM waa loo oggol yahay inuu isticmaalo walxaha lagu qeexay heerka C++17.
  • Shuruudaha deegaanka ee dhismaha LLVM waa la kordhiyay. Qalabka dhismuhu waa inuu hadda taageeraa heerka C++17, i.e. Si aad u dhisto, waxaad u baahan tahay ugu yaraan GCC 7.1, Clang 5.0, Apple Clang 10.0 ama Visual Studio 2019 16.7.
  • Dhabarka dambe ee qaab dhismeedka AArch64 wuxuu ku darayaa taageerada Cortex-A715, Cortex-X3 iyo Neoverse V2 CPUs, isu-ururinta RME MEC (Maxaaladaha Sireed ee Xusuusta), kordhinta Armv8.3 (Lambarka Isku-dhafan) iyo Qaybaha Kala Duwan ee Shaqada.
  • Dhabarka dambe ee qaab dhismeedka ARM, taageerada Armv2, Armv2A, Armv3 iyo Armv3M aaladaha bartilmaameedka waa la joojiyay, kuwaas oo soo saarista koodka saxda ah aan la dammaanad qaadin. Waxaa lagu daray awoodda soo saarista koodka tilmaamaha loogu shaqeynayo nambarada adag.
  • Dhabarka dambe ee dhismaha X86 wuxuu ku daray taageerada hab-dhismeedka hab-dhismeedka hab-dhismeedka (ISAs) AMX-FP16, CMPCCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT. Taageero lagu daray RDMSRLIST, RMSRLIST iyo tilmaamaha WRMSRNS. Doorashooyinka la fuliyay "-mcpu=raptorlake", "-mcpu=meteorlake", "-mcpu=emeraldrapids", "-mcpu=sierraforest", "-mcpu=graniterapids" iyo "-mcpu=grandridge".
  • Waxaa lagu daray taageerada rasmiga ah ee madal LoongArch.
  • Dib u hagaajinta MIPS, PowerPC iyo naqshadaha RISC-V
  • Taageero lagu daray oo lagu saxayo 64-bit ee la fulin karo ee qaab dhismeedka LoongArch ee cilladaha LLDB. Hagaajinta maaraynta calaamadaha cilladaha COFF Lagu bixiyay shaandhaynta DLL-yada nuqul ka mid ah ee liiska qaybaha Windows ee raran.
  • Laybareeriga Libc++, shaqada ugu weyn waxay diiradda saaratay hirgelinta taageerada sifooyin cusub oo heerarka C++20 iyo C++23.
  • Xidhiidhiyaha LDD wuxuu si weyn u yareeyaa wakhtiga isku xidhka isagoo barbar dhigaya iskaanka dib u dejinta ciwaanka iyo hawlgalada bilawga ah ee qaybta. Taageero lagu daray isku-buufinta qaybta iyadoo la adeegsanayo algorithm-ka ZSTD.

Source: opennet.ru

Add a comment