Mgbe ọnwa isii nke mmepe gasịrị, ewepụtala LLVM 22.1.0. Ọ na-emepụta ngwaọrụ (ndị na-agbakọ ihe, ndị na-eme ka ihe dịkwuo mma, na ndị na-emepụta koodu) nke na-achịkọta mmemme ka ọ bụrụ koodu bit nke dị n'etiti ntuziaka mebere RISC (igwe mebere dị ala nwere sistemụ nhazi ọtụtụ ọkwa). Enwere ike ịgbanwe koodu pseudo emepụtara ka ọ bụrụ koodu igwe maka ikpo okwu ebumnuche enyere ma ọ bụ jiri ya mee ihe site na onye na-agbakọ ihe n'oge (JIT) iji mepụta ntuziaka igwe ozugbo n'oge mmejuputa mmemme. Dabere na teknụzụ LLVM, ọrụ ahụ na-emepụta ihe nchịkọta Clang, na-akwado asụsụ mmemme C, C++, na Objective-C. Malite na alaka 18.x, ọrụ ahụ gbanwere gaa na atụmatụ ọnụọgụ ọhụrụ, dịka a na-eji ntọhapụ 0 ("N.0") n'oge mmepe, a na-akpọkwa ụdị kwụsiri ike nke mbụ "N.1."
Mmelite na Clang 22 gụnyere:
- Agbakwunyere nkwado maka ihe nrịbama nkesa ebe nchekwa (Ihe nrịbama nkewa) maka akara ọrụ nkesa ebe nchekwa emere site na iji ọrụ dịka malloc nwere ihe njirimara pụrụ iche. Ihe nrịbama nkesa na-enye ohere maka nhazi ozi obo, ime ka nchọpụta ntapu ebe nchekwa dị mfe, na inye ohere ịmekọta ihe dabere na ebumnuche ha ma ọ bụ ụkpụrụ mgbanwe (dịka ọmụmaatụ, kewaa "ọkụ" na data "oyi"). Iji mee ka ọ rụọ ọrụ, jiri ọkọlọtọ "-fsanitize=alloc-token".
- Atụmatụ metụtara asụsụ C:
- E tinyela nkọwapụta nke na-akọwa usoro igbu oge "nkwụsịtụ", nke na-enye ohere ka e mee ihe mgbe oke ugbu a pụtara. E tinyela ọkọlọtọ "-fdefer-ts" iji mee ka nkwado "nkwụsịtụ" dị ike.
- Agbakwunyela ọrụ __builtin_stack_address() arụnyere n'ime ya, nke na-egosipụta ọrụ yiri ya na GCC. Ọrụ a na-eweghachi adreesị stack nke kewara mpaghara stack nke ọrụ ugbu a nke kpọrọ __builtin_stack_address() na ọrụ ndị ọzọ ọ na-akpọ.
- A na-emepụta ike maka ọkọlọtọ C2y n'ọdịnihu:
- Agbakwunyere nkwado maka loops aha, nke na-enye gị ohere itinye aha na loops na nkwupụta mgbanwe, nke enwere ike ịkọwapụta na nkwupụta ezumike na gaa n'ihu iji kọwaa loop ahụ nke ọma ịpụ na. mpụga: maka (int i = 0; i < IK; ++ i) { maka (int j = 0; j < JK; ++ j) { gaa n'ihu; // gaa na CONT1 gaa n'ihu na mpụga; // gaa na CONT2 // CONT1 } // CONT2 }
- Mmejuputa nke macro "__COUNTER__" arụnyere n'ime ya, nke e mere iji mepụta aha njirimara pụrụ iche, agbasaala ma tinye ya na ọkọlọtọ ahụ. E tinyela oke oku 2147483647 na macro a; ịgafe oke a ga-emepụta njehie.
- E wepụrụ ịdọ aka ná ntị (-Wstatic-in-in-line) mgbe ejiri ọrụ static ma ọ bụ mgbanwe dị n'ime ọrụ ndị a kpọrọ "extern inline".
- Ike akọwara na ọkọlọtọ C23 C:
- Faịlụ isi nke float.h na-akwadozi macro FLT_SNAN, DBL_SNAN, na LDBL_SNAN, nke na-eme ka ụkpụrụ NaN dị maka ụdị float, double, na ogologo abụọ (dị ka nke a na-akpọ "double").
- Doziri njehie ebe a na-emeso ụdị dị iche iche a na-akpọghị aha dị ka ndị dakọtara n'ime otu nkeji ntụgharị asụsụ ma ọ bụrụ na ha nwere otu ubi.
- A gbatịala ọkọlọtọ "-MG" eji eleghara faịlụ isi efu n'oge nyocha ndabere anya gaa na ntuziaka "#embed" ma ugbu a na-egbochi njehie "anaghị ahụ faịlụ ahụ" mgbe faịlụ akọwapụtara na ntuziaka "#embed" na-efu.
- Njirimara ndị metụtara C++:
- Agbakwunyela ikike iji njikọ nhazi n'ọnọdụ "constexpr", dịka e si mepụta ya na nkọwapụta C++2c (C++26). Nke a pụtara na ntụaka na ngosipụta na-adịgide adịgide nwere ike ịbụ okwu na-adịgide adịgide. A na-etinye nkwado maka usoro na nhazi dị mfe (akwadobeghị tuples). constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
- Dịka ọkọlọtọ C++20 si chọọ, a na-agbanwe mmachi ugbu a ka ọ bụrụ ụdị ọkọlọtọ tupu a lelee ya anya, na-enye ohere maka ozi nchọpụta ziri ezi karị na ijikwa njehie nnọchi anya nke ọma na arụmụka template ejiri naanị na concept-ids.
- E tinyekwara ezinụlọ nke ọrụ ndị e wuru n'ime "__builtin_[lt|gt|le|ge]_synthesizes_from_spaceship" iji chọpụta ma ndị na-arụ ọrụ ntụnyere "<", ">", "<=", na ">=" sitere na onye ọrụ "<=>".
- Agbanweela paramita "-Wincompatible-pointer-types" ka ọ pụta njehie kama ịdọ aka ná ntị. Iji laghachi na omume gara aga, jiri nhọrọ "-Wno-error=incompatible-pointer-types".
- Ọrụ ndị agbakwunyere n'ime ya bụ __builtin_bswapg, __builtin_elementwise_ldexp, __builtin_elementwise_fshl, __builtin_elementwise_fshr, __builtin_elementwise_minnumnum, __builtin_elementwise_maxnumnum, __builtin_masked_load, __builtin_masked_expand_load, __builtin_masked_store, __builtin_masked_compress_store, __builtin_masked_gather, __builtin_masked_scatter, na __builtin_dedup_pack. Dịka ọmụmaatụ, builtin_dedup_pack na-enye gị ohere iwepụ ihe abụọ na ndepụta ụdị: site na iji MyTypeList = TypeList<_builtin_dedup_pack ...>; // ụdị nke ga-esi na ya pụta ga-abụ TypeList
- Mgbe a na-ewepụ omume na-akọwaghị nke ọma site na iji UBSan (-fsanitize=undefined -fsanitize-trap=undefined), a na-etinye ozi kpatara njehie ugbu a na ozi njehie emepụtara. Agbakwunyela ọkọlọtọ "-fsanitize-debug-trap-reasons" iji kọwaa ọkwa nkọwa na ozi njehie. Enwere ike ịtọ ya ka ọ bụrụ "isi" maka nkọwa izugbe (dịka ọmụmaatụ, "Mgbakwunye Integer juru eju") na "nkọwa zuru ezu" iji tinye ozi zuru ezu (dịka ọmụmaatụ, "mgbakwunye integer edebanyere aha na 'a + b'").
- Ọkọlọtọ mkpokọta ọhụrụ agbakwunyere:
- "-f[no-]sanitize-debug-trap-reasons" iji chịkwaa ma ihe kpatara ọnyà ndị a dị n'ime ozi nsogbu mgbe a na-achịkọta ya na ọnọdụ "-fsanitize-trap".
- "-fsanitize=alloc-token", "-falloc-token-max", "-fsanitize-alloc-token-fast-abi", na "-fsanitize-alloc-token-extended" iji jikwaa ihe nrịbama nkesa ebe nchekwa.
- "-fmatrix-memory-layout" iji chịkwaa nhazi ebe nchekwa nke ụdị matrix (dịka ọmụmaatụ kọlụm-isi maka kọlụm-isi, kọlụm-isi maka ahịrị-isi).
- Ọrụ ndị a nwere njirimara "malloc_span", nke yiri njirimara malloc mana ọ dabara na ọrụ ndị na-eweghachi ihe owuwu dị ka span nke nwere ihe ntụaka na ubi nwere nha ma ọ bụ ihe ntụaka na njedebe nke blọk ahụ.
- Agbakwunyere njirimara "modular_format" iji họrọ mmejuputa ọrụ printf nke ejikọtara ọnụ nke ọma n'oge njikọ.
- Agbasawanyela ngwaọrụ nyocha nchọpụta na nke na-anaghị agbanwe agbanwe, agbakwunyela nyocha ọhụrụ (ọtụtụ mmezi metụtara nchọpụta ọrịa dị iche iche).
- E tinyela ihe ndị ọzọ dị mkpa maka ndọtị SSE, AVX, na AVX512 na azụ X86. E tinyela ụdị nrụpụta maka Intel CPUs dabere na Wildcat Lake (-march=wildcatlake) na Nova Lake (-march=novalake) microarchitectures.
- Azụ azụ AArch64 na-akwado Ampere Computing Ampere1C (ampere1c), Arm C1-Nano (c1-nano), Arm C1-Pro (c1-pro), Arm C1-Premium (c1-premium), na Arm C1-Ultra (c1-ultra). Agbakwunyela ọrụ ndị ọzọ arụnyere n'ime maka ntuziaka FCVTZ[US], FCVTN[US], FCVTM[US], FCVTP[US], na FCVTA[US]. Nkwado Function Multi-Versioning (FMV) eguzobewo. Ndị ọrụ nwere ike ugbu a ịgbanwe mkpa nke ụdị ọrụ dị iche iche.
- Agbakwunyere nkwado maka usoro LoongArch32 (LA32R, LA32S).
- E mezigharịrị azụ azụ maka ARM, AMDGPU, RISC-V, LoongArch64, MIPS, WebAssembly, na PowerPC architectures.
isi: opennet.ru
