Ka mor'a likhoeli tse tšeletseng tsa tsoelo-pele hlahisoa tokollo ea morero LLVM 9.0 - Lisebelisoa tse lumellanang le GCC (li-compilers, optimizers le lijenereithara tsa khoutu), ho bokella mananeo ka har'a bitcode ea bohareng ea RISC-joaloka litaelo tsa sebele (mochine oa boemo bo tlaase o nang le tsamaiso ea mekhoa e mengata ea ho ntlafatsa). Pseudocode e hlahisitsoeng e ka fetoloa ho sebelisoa JIT compiler hore e be litaelo tsa mochine ka ho toba nakong ea ts'ebetso ea lenaneo.
Likarolo tse ncha tsa LLVM 9.0 li kenyelletsa ho tlosoa ha tag ea moralo oa liteko sethaleng sa RISC-V, tšehetso ea C ++ bakeng sa OpenCL, bokhoni ba ho arola lenaneo ka likarolo tse jereng ka matla LLD, le ts'ebetsong ea "asm goto", e sebelisitsoeng ho khoutu ea kernel ea Linux. libc ++ e ekelitse tšehetso bakeng sa WASI (WebAssembly System Interface), 'me LLD e kentse tšehetso ea pele bakeng sa khokahano e matla ea WebAssembly.
E kentsoe phethahatso ea polelo e khethehileng ea GCC "asm goto", e u lumellang hore u tlohe sebakeng sa assembler inline block ho ea ho label ka khoutu ea C. Karolo ena e ea hlokahala ho aha Linux kernel ka mokhoa oa "CONFIG_JUMP_LABEL=y" o sebelisa Clang ho sistimi e nang le x86_64 ea meralo. Ha ho nahanoa ka liphetoho tse kenyellelitsoeng liphatlalatsong tse fetileng, kernel ea Linux e se e ka hahuoa Clang bakeng sa meralo ea x86_64 (eo pele e neng e le moaho oa letsoho, aarch64, ppc32, ppc64le le meralo ea mips e ne e tšehetsoa). Ho feta moo, merero ea Android le ChromeOS e se e fetotsoe ho sebelisa Clang bakeng sa mohaho oa kernel, 'me Google e ntse e leka Clang e le sethala se seholo sa ho haha lik'hemik'hale bakeng sa lisebelisoa tsa eona tsa Linux. Nakong e tlang, likarolo tse ling tsa LLVM li ka sebelisoa ts'ebetsong ea ho haha kernel, ho kenyeletsa LLD, llvm-objcopy, llvm-ar, llvm-nm, le llvm-objdump;
E kentse tšehetso ea liteko bakeng sa ho sebelisa C++17 ho OpenCL. Likarolo tse ikhethileng li kenyelletsa ts'ehetso ea litšoaneleho tsa sebaka sa aterese, ho thibela phetoho ea sebaka sa aterese ka mofuta oa li-casting operators, ho fana ka mefuta ea li-vector joalo ka OpenCL bakeng sa C, boteng ba mefuta e khethehileng ea OpenCL bakeng sa litšoantšo, liketsahalo, likanale, joalo-joalo.
E kentse lifolakha tse ncha tsa "-ftime-trace" le "-ftime-trace-granularity=N" ho hlahisa tlaleho mabapi le nako ea ts'ebetso ea mekhahlelo e fapaneng ea pele (ho bala, ho qala) le backend (mekhahlelo ea ho ntlafatsa). Tlaleho e bolokoa ka sebopeho sa json, se lumellanang le chrome://tracing le speedscope.app;
Ts'ebetso e ekelitsoeng ea "__declspec(allocator)" le tlhahiso ea tlhaiso-leseling e tsamaeang le bothata e u lumellang ho beha leihlo tšebeliso ea mohopolo tikolohong ea Visual Studio;
Bakeng sa puo ea C, tšehetso e kentsoe "__FILE_NAME__" macro, e ts'oanang le "__FILE__" macro, empa e kenyelletsa feela lebitso la faele ntle le tsela e felletseng;
C ++ e atolositse tšehetso bakeng sa litšobotsi tsa sebaka sa aterese ho koahela likarolo tse fapaneng tsa C ++, ho kenyeletsoa parameter le mekhoa ea likhang, mefuta ea litšupiso, tlhahiso ea mofuta oa ho khutlisa, lintho, mesebetsi e hlahisoang ka boits'oaro, basebelisi ba hahiloeng, le tse ling.
Bokhoni bo amanang le tšehetso ea OpenCL, OpenMP le CUDA bo ekelitsoe. Sena se kenyelletsa ts'ehetso ea pele bakeng sa ho kenyelletsa ka mokhoa o hlakileng oa mesebetsi ea OpenCL e hahiloeng (folakha ea "-fdeclare-opencl-builtins" e kentsoe), keketso ea cl_arm_integer_dot_product e kentsoe ts'ebetsong, 'me lisebelisoa tsa tlhahlobo li atolositsoe;
Mosebetsi oa static analyzer o ntlafalitsoe mme litokomane tse mabapi le ho etsa tlhahlobo e tsitsitseng li kentsoe. Lifolakha tse kentsoeng ho hlahisa li-module tse fumanehang tsa ho hlahloba le likhetho tse tšehetsoeng (“-analyzer-checker[-option]-help”, “-analyzer-checker[-option]-help-alpha” le “-analyzer-checker[-option]-help "-moetsi"). E kentse folakha ea "-analyzer-werror" ho tšoara litemoso joalo ka liphoso.
E kentse mekhoa e mecha ea netefatso:
tšireletseho.insecureAPI.DeprecatedKapaUnsafeBufferHandling ho hlwaya mekhoa e sa bolokehang bakeng sa ho sebetsa le buffers;
osx.MIGChecker ho batla tlōlo ea molao ea MIG (Mach Interface Generator) call;
optin.osx.OSObjectCSstyleCast ho fumana liphetoho tse fosahetseng tsa XNU libkern ntho;
apiModeling.llvm e nang le sete ea mesebetsi ea ho hlahloba mohlala ho bona liphoso ho codebase ea LLVM;
Khoutu e tsitsitseng bakeng sa ho hlahloba lintho tse sa tsejoeng tsa C ++ (UninitializedObject in the optin.cplusplus package);
Sesebelisoa sa clang-format se ekelitse ts'ehetso ea ho fometa khoutu ka puo ea C # mme se fana ka ts'ehetso bakeng sa mokhoa oa ho fometa khoutu o sebelisoang ke Microsoft;
Clang-cl, sebopeho se seng sa taelo-taelo se fanang ka tumellano ea boemo ba khetho le motlatsi oa cl.exe e kenyellelitsoeng ho Visual Studio, e kentse li-heuristics ho tšoara lifaele tse seng teng joalo ka likhetho tsa mola oa taelo le ho bonts'a temoso e ts'oanang (mohlala, ha o matha "clang-cl / diagnostic :caret /c test.cc");
Karolo e kholo ea licheke tse ncha e kenyellelitsoe ho linter clang-tidy, ho kenyelletsa le licheke tse kenyellelitsoeng ho OpenMP API;
E atolositsoe bokhoni ba seva clangd (Clang Server), moo mokhoa oa ho haha ka morao-rao o nolofalitsoeng ka ho sa feleng, tšehetso bakeng sa liketso tsa maemo a nang le khoutu e kenyelelitsoe (ho khutlisa mefuta e fapaneng, ho atolosoa ha litlhaloso tsa likoloi le tse kholo, phetoho ea likhoele tse phonyohileng ho tse sa phonyohang), bokhoni ba ho bonts'a. litemoso tse tsoang ho Clang-tidy, tlhahlobo e atolositsoeng ea liphoso lifaeleng tsa lihlooho mme e ekelitse bokhoni ba ho bonts'a tlhahisoleseling mabapi le mofuta oa maemo;
Sebopeho sa karohano ea liteko se kentsoe ho LLD linker, e u lumellang ho arola lenaneo le le leng likarolo tse 'maloa, tseo e' ngoe le e 'ngoe ea tsona e leng faeleng e fapaneng ea ELF. Karolo ena e u lumella ho qala karolo ea mantlha ea lenaneo, e tla kenya likarolo tse ling kamoo ho hlokahalang nakong ea ts'ebetso (mohlala, o ka arola sebali sa PDF se hahelletsoeng ho faele e arohaneng, e tla jarolla feela ha mosebelisi a bula PDF. faele).
Sehokelo sa LLD tlisitsoe ka pele sebakeng se loketseng ho hokahanya kernel ea Linux bakeng sa meaho ea arm32_7, arm64, ppc64le le x86_64.
Likhetho tse ncha "-" (output to stdout), "-[no-] lumella-shlib-undefined", "-undefined-glob", "-nmagic", "-omagic", "-dependent-library", " - z ifunc-noplt" le "-z common-size-size-size". Bakeng sa meralo ea AArch64, tšehetso bakeng sa BTI (Sesupo sa Sepheo sa Lekala) le PAC (Pointer Authentication Code) litaelo li kentsoe. Tšehetso ea li-platform tsa MIP, RISC-V le PowerPC e ntlafalitsoe haholo. E kenyellelitse tšehetso ea pele bakeng sa khokahano e matla bakeng sa WebAssembly;
Ho libc++ kenngwa tshebetsong mesebetsi ssize, std::is_constant_evaluated, std::midpoint le std::lerp, mekhoa ea "pele" le "back" e kenyelelitsoe ho std::span, litšobotsi tsa mefuta std::is_unbounded_array le std::is_bounded_array e kentsoe , bokhoni ba std bo ekelitsoe: :atomic. Tšehetso ea GCC 4.9 e khaolitsoe (e ka sebelisoa le GCC 5.1 le litokollo tse ncha). Tšehetso e ekelitsoeng WASI (WebAssembly System Interface, sebopeho sa ho sebelisa WebAssembly kantle ho sebatli);
Lintlafatso tse ncha li kentsoe. E lumelletse phetoho ea memcmp mehala ho bcmp maemong a mang. Ho se kenyelelitsoe mokhoa oa ho hlahloba litafole tseo ho tsona li-switch blocks li ke keng tsa fihlelleha kapa ha litaelo li sa sebelisoe, mohlala, ha u bitsa mesebetsi ka mofuta o se nang letho;
Karolo e ka morao ea meralo ea RISC-V e tsitsitsoe, e seng e sa behiloe joalo ka liteko mme e hahiloe ka boiketsetso. E fana ka tšehetso e felletseng ea tlhahiso ea khoutu bakeng sa mefuta e fapaneng ea litaelo tsa RV32I le RV64I tse nang le katoloso ea MAFDC;
Lintlafatso tse ngata li entsoe ho li-backends bakeng sa meralo ea X86, AArch64, ARM, SystemZ, MIPS, AMDGPU le PowerPC. Ka mohlala, bakeng sa meralo
AArch64 e ekelitse tšehetso bakeng sa litaelo tsa SVE2 (Scalable Vector Extension 2) le MTE (Memory Tagging Extensions); karolong e ka morao ea ARM, tšehetso ea Armv8.1-M ea meralo le katoloso ea MVE (M-Profile Vector Extension) e ile ea eketsoa. Ts'ehetso ea meralo ea GFX10 (Navi) e kenyellelitsoe karolong e ka morao ea AMDGPU, bokhoni ba ho letsetsa ts'ebetso bo nolofalloa ka boiketsetso, 'me pase e kopaneng e ea sebetsa. DPP (Data-Parallel Primitives).
LLDB debugger hona joale e na le mebala e totobatsang bakeng sa morao-rao le tšehetso e eketsehileng bakeng sa DWARF4 debug_types le DWARF5 debug_info blocks;
Ts'ehetso bakeng sa lifaele tsa ntho le tse ka sebelisoang ka sebopeho sa COFF e kentsoe lits'ebetsong tsa llvm-objcopy le llvm-strip.