Ho lokolloa ha LLVM 16.0 compiler suite

Kamora likhoeli tse ts'eletseng tsa nts'etsopele, ho hlahisoa tokollo ea projeke ea LLVM 16.0 - sesebelisoa sa lisebelisoa se lumellanang le GCC (li-compilers, optimizers le lijenereithara tsa khoutu) tse bokellang mananeo ka har'a bitcode ea lipakeng tsa RISC-joaloka litaelo tse hlakileng (mochini oa boemo bo tlase o nang le mokhoa oa ho ntlafatsa maemo a mangata). Khoutu ea pseudo e hlahisitsoeng e ka fetoloa ke moqapi oa JIT hore e be litaelo tsa mochini hantle ka nako ea ts'ebetso ea lenaneo.

Lintlafatso tse kholo ho Clang 16.0:

  • Tekanyetso ea kamehla ea C++/ObjC++ e behiloe ho gnu++17 (eo pele e neng e le gnu+++14), e leng se bolelang ho tšehetsa likarolo tsa C++17 ka li-extensions tsa GNU ka ho sa feleng. U ka sebelisa khetho ea "-std=gnu+++14" ho khutlela boitšoarong ba pele.
  • E kentse tšebetsong likarolo tse tsoetseng pele tse amanang le maemo a C++20:
    • Mesebetsi e sa reng letho ea setho,
    • ho ts'oara litlamo tse hlophisitsoeng mesebetsing ea lambda,
    • Equality operator ka hare ho lipolelo,
    • Bokhoni ba ho se hlakise lebitso la sehlooho maemong a mang,
    • Tumelo ea ho qala ka kakaretso ka masakaneng ("Aggr(val1, val2)").
  • Likarolo tse kentsoeng tse hlalositsoeng maemong a tlang a C++2b:
    • Li-label li lumelloa qetellong ea lipolelo tse kopantsoeng,
    • static operator(),
    • mokhanni ea tsitsitseng[],
    • E fana ka tumellano le mofuta oa char8_t,
    • Letoto la litlhaku tse lumelletsoeng ho sebelisoa ho "\N{...}" le ekelitsoe,
    • E kentse bokhoni ba ho sebelisa mefuta e phatlalalitsoeng e le "static constexpr" mesebetsing e phatlalalitsoeng e le constexpr.
  • Likarolo tse kentsoeng tse hlalositsoeng maemong a tlang a C2x C:
    • Ho tima temoso ea "-Wunused-label", "[[mohlomong_unused]]" tšobotsi e ka sebelisoa ho lileibulo.
    • Li-labels li ka beoa kae kapa kae ka har'a mantsoe a kopaneng,
    • E kenyellelitse mofuta le mofuta oa li-opereishene tse sa lekanang,
    • Mofuta o mocha oa nullptr_t le nullptr constant ho hlalosa null pointers e ka fetolelwang ho mofuta ofe kapa ofe wa pointer mme e emela mofuta o fapaneng wa NULL o sa tlameheng ho mefuta e mengata le lefeela*.
    • Ka mokhoa oa C2x, ho letsetsa va_start macro ka palo e fapaneng ea likhang (variadic) ho lumelloa.
  • Mekhoeng ea ho lumellana le C99, C11, le C17, likhetho tsa "-Wimplicit-function-declaration" le "-Wimplicit-int" joale li hlahisa phoso ho fapana le temoso ka ho sa feleng.
  • Tšebeliso e sa tobang ea "void *" (mohlala, "void func(void *p) { *p; }") ho C++ mode joale e hlahisa phoso e tšoanang le ISO C++, GCC, ICC, le MSVC.
  • Ho hlakisa li-bitfields joalo ka li-operands tsa litaelo (mohlala "__asm ​​​​{mov eax, s.bf }") ho li-block tsa kopano tsa mofuta oa Microsoft joale ho hlahisa phoso.
  • Litlhahlobo tse ekelitsoeng bakeng sa boteng ba meaho e fapaneng le mekhatlo ea basebetsi e nang le mabitso a tšoanang mejuleng e fapaneng.
  • Bokhoni bo atolositsoeng bo amanang le tšehetso ea OpenCL le OpenMP. Litlhahlobo tse ntlafalitsoeng tsa litempele tsa C++ tse sebelisoang lipuisanong tsa kernel ea OpenCL. Ts'ehetso e ntlafalitsoeng ea li-queuing block bakeng sa AMDGPU. Nonwind e kenyellelitsoe ka mokhoa o hlakileng mesebetsing eohle. Tšehetso e ntlafetseng bakeng sa mesebetsi e hahiloeng.
  • E fane ka bokhoni ba ho sebelisa CLANG_CRASH_DIAGNOSTICS_DIR e feto-fetohang ho hlalosa bukana moo ho bolokoang lintlha tsa tlhahlobo ea ho oa.
  • Tšehetso ea Unicode e nchafalitsoe ho Unicode 15.0. Matšoao a mang a lipalo a lumelloa ho li-identifiers, joalo ka "₊" (mohlala, "double xₖ₊₁").
  • Ts'ehetso e ekelitsoeng bakeng sa ho kenya lifaele tse ngata tsa tlhophiso (lifaele tsa tlhophiso tsa kamehla li kengoa pele, ebe tse boletsoeng ka "--config=" folakha, eo joale e ka hlalosoang makhetlo a mangata). E fetotsoe taelo ea ho kenya faele ea kamehla: Clang o leka ho kenya faele pele - .cfg mme haeba e sa fumanehe e leka ho kenya lifaele tse peli .cfg le .cfg. E kentse folakha ea "-no-default-config" ho tima lifaele tsa tlhophiso ka mokhoa o ikhethileng.
  • Ho etsa bonnete ba hore meaho e ka phetoa, hoa khonahala ho khutlisa letsatsi le boleng ba nako ho __DATE__, __TIME__ le __TIMESTAMP__ macros ka nako e boletsoeng ho feto-fetoha ha tikoloho ea SOURCE_DATE_EPOCH.
  • Ho hlahloba mesebetsi e hahelletsoeng (builtin) e ka sebelisoang maemong a li-constants, "__has_constexpr_builtin" macro e kentsoe.
  • E kentse folakha e ncha "-fcoro-aligned-allocation" bakeng sa kabo e tsamaellanang ea liforeimi tsa coroutine.
  • "-fstrict-flex-arrays = "folakha e sebelisa ts'ehetso bakeng sa boemo ba boraro ba ho lekola ntho e feto-fetohang ka har'a meaho (Flexible Array Members, letoto la boholo bo sa lekanyetsoang qetellong ea sebopeho). Boemong ba boraro, ke boholo feela "[]" (mohlala, "int b[]") bo nkoang e le sehlopha se feto-fetohang, empa boholo "[0]" (mohlala, "int b[0]") ha ho joalo.
  • E kentse folakha ea "-fmodule-output" ho nolofalletsa mofuta o le mong oa ho kopanya oa likarolo tse tloaelehileng tsa C++.
  • E kentse "-Rpass-analysis=stack-frame-layout" mokhoa, o lumellang ho hlahloba mathata ka sebopeho sa foreimi ea stack.
  • Sebopeho se secha __attribute__((target_version("cpu_features"))) se ekelitsoe 'me tšebetso ea __attribute__((target_clones("cpu_features1″,"cpu_features2",…))) e ekelitsoe ho khetha mefuta e itseng ea likarolo tse fanoeng. ka CPU AArch64.
  • Lisebelisoa tse ntlafalitsoeng tsa tlhahlobo:
    • E kentse temoso ea "-Wsingle-bit-bitfield-constant-conversion" ho lemoha khutso e hlakileng ha u abela e 'ngoe ho karolo e le 'ngoe e saenneng.
    • Tlhahlobo e atolositsoeng ea mefuta e sa tsejoeng ea constexpr.
    • E kentse litemoso tsa "-Wcast-function-type-strict" le "-Wincompatible-function-pointer-types-strict" ho lemoha mathata a ka bang teng ka mofuta oa ts'ebetso.
    • Litlhahlobo tse kentsoeng bakeng sa ho sebelisa mabitso a mojule a fosahetseng kapa a bolokiloeng li-block tsa kantle ho naha.
    • Ntlafatso ea ho lemoha ha mantsoe a bohlokoa a "auto" a sieo litlhalosong.
    • E kenyellelitse licheke bakeng sa maemo a tlatsetso ho ts'ebetsong ea temoso ea "-Winteger-overflow".
  • Ts'ehetso e kentsoeng bakeng sa meralo ea thuto ea LoongArch (-march=loongarch64 kapa -march=la464) e sebelisitsoeng ho li-processor tsa Loongson 3 5000, tse sebelisang RISC ISA e ncha e ts'oanang le MIPS le RISC-V.

Litlhahiso tsa bohlokoa ho LLVM 16.0:

  • Khoutung ea LLVM, ts'ebeliso ea likarolo tse hlalositsoeng ho standard C++17 e lumelletsoe.
  • Keketseho ea litlhoko tsa tikoloho bakeng sa ho aha LLVM. Setsi sa lisebelisoa tsa ho aha joale se lokela ho ts'ehetsa maemo a C ++ 17, ke hore. ho haha ​​ho hloka bonyane GCC 7.1, Clang 5.0, Apple Clang 10.0, kapa Visual Studio 2019 16.7.
  • Tšehetso bakeng sa Cortex-A64, Cortex-X715 le Neoverse V3 CPUs, RME MEC (Memory Encryption Contexts) assembler, Armv2 extensions (Complex Number) le Function Multi Versioning e kenyelelitsoe ho AArch8.3 backend.
  • Sebaka sa morao-rao sa meralo ea ARM ha se sa ts'ehetsa sethala se reriloeng sa Armv2, Armv2A, Armv3 le Armv3M, tseo tlhahiso e nepahetseng ea khoutu e neng e sa netefatsoa. E kentse bokhoni ba ho hlahisa khoutu bakeng sa litaelo tsa ho sebetsa ka linomoro tse rarahaneng.
  • Tšehetso e ekelitsoeng bakeng sa meralo ea li-architecture tsa litaelo (ISA) AMX-FP86, CMPCXADD, AVX-IFMA, AVX-VNNI-INT16, AVX-NE-CONVERT ho X8 backend. Tšehetso e ekelitsoeng bakeng sa litaelo tsa RDMSRLIST, RMSRLIST le WRMSRNS. E kentswe tshebetsong "-mcpu=raptorlake", "-mcpu=meteorlake", "-mcpu=emeraldrapids", "-mcpu=sierraforest", "-mcpu=graniterapids", le "-mcpu=grandridge" dikgetho.
  • E kentse tšehetso ea semmuso bakeng sa sethala sa LoongArch.
  • Likahare tse ntlafalitsoeng tsa meralo ea MIPS, PowerPC le RISC-V
  • Ts'ehetso ea ho lokisa liphoso tsa 64-bit bakeng sa meralo ea LoongArch e kentsoe ho LLDB debugger. Ts'ebetso e ntlafetseng ea matšoao a ho lokisa COFF. Ho sefa ha li-DLL tse tšoanang lethathamong la li-module tsa Windows tse kentsoeng.
  • Laebraring ea Libc ++, mosebetsi o ka sehloohong o ne o lebisitsoe ho kenya ts'ebetsong ts'ehetso bakeng sa likarolo tse ncha tsa litekanyetso tsa C ++ 20 le C +++ 23.
  • Nako ea ho hokahanya e fokotsehile haholo ho sehokelo sa LDD ka ho ts'oana le ts'ebetso ea ho fallisoa ha aterese le ts'ebetso ea ho qala likarolo. Ts'ehetso e ekelitsoeng bakeng sa khatello ea karolo ho sebelisa algorithm ea ZSTD.

Source: opennet.ru

Eketsa ka tlhaloso