Fa'asa'olotoina le seti LLVM 9.0 tu'ufa'atasi

Ina ua uma le ono masina o le atinae tuuina atu fa'amatu'u galuega LLVM 9.0 - Meafaigaluega e fetaui ma le GCC (fa'apipi'i, fa'asili ma fa'atupu fa'ailoga), tu'ufa'atasia polokalame i totonu o le bitcode vaeluaga ole RISC-pei o fa'atonuga fa'apitoa (masini fa'atauva'a maualalo fa'atasi ai ma le tele-level optimization system). O le pseudocode gaosia e mafai ona liua e faʻaaoga ai le JIT compiler i faʻatonuga masini i le taimi o le faʻatinoga o polokalame.

O foliga fou o le LLVM 9.0 e aofia ai le aveeseina o le faʻailoga faʻataʻitaʻiga mai le faʻatulagaina o le RISC-V platform, C ++ lagolago mo OpenCL, le mafai ona vaeluaina se polokalame i vaega faʻapipiʻiina i le LLD, ma le faʻatinoina o le "asm goto", faʻaaogaina i le Linux kernel code. libc++ fa'aopoopo le lagolago mo le WASI (WebAssembly System Interface), ma LLD fa'aopoopo le lagolago muamua mo le feso'ota'iga malosi a le WebAssembly.

Faʻaleleia atili i le Clang 9.0:

  • Faaopoopo fa'atinoga o le fa'amatalaga fa'apitoa a le GCC "asm goto", lea e mafai ai ona e alu ese mai se poloka assembler inline i se igoa i le C code. O lenei vaega e manaʻomia e fausia ai le fatu Linux i le "CONFIG_JUMP_LABEL = y" mode e faʻaaoga ai Clang i luga o faiga faʻapipiʻi x86_64. I le amanaia o suiga na faʻaopoopo i faʻasalalauga talu ai, e mafai nei ona fausia le fatu Linux i Clang mo le fausaga x86_64 (muamua na o le fausiaina o le lima, aarch64, ppc32, ppc64le ma mips architectures na lagolagoina). E le gata i lea, o poloketi Android ma ChromeOS ua uma ona liua e faʻaoga le Clang mo le fausiaina o fatu, ma o loʻo faʻataʻitaʻiina e Google le Clang e avea ma faʻavae autu mo le fausiaina o fatu mo lona gaosiga o faiga Linux. I le lumanaʻi, o isi vaega o le LLVM e mafai ona faʻaogaina i le faʻaogaina o le fatu fatu, e aofia ai le LLD, llvm-objcopy, llvm-ar, llvm-nm, ma llvm-objdump;
  • Fa'aopoopo le lagolago fa'ata'ita'i mo le fa'aogaina o le C++17 ile OpenCL. O vaega fa'apitoa e aofia ai le lagolago mo fa'amatalaga avanoa avanoa, polokaina o le fa'aliliuina o avanoa avanoa e ala i le tu'uina atu o fa'aupuga, tu'uina atu o ituaiga ve'e pei o OpenCL mo C, o le i ai o ituaiga OpenCL fa'apitoa mo ata, mea tutupu, auala, ma isi.
  • Faʻaopoopo fuʻa fou tuʻufaʻatasia "-ftime-trace" ma le "-ftime-trace-granularity = N" e faʻatupu ai se lipoti i le taimi o le faʻatinoina o laʻasaga eseese o le pito i luma (parsing, initialization) ma le pito i tua (tulaga sili ona lelei). O loʻo faʻasaoina le lipoti i le json format, e fetaui ma chrome://tracing ma speedscope.app;
  • Faʻaopoopo le faʻaogaina o le "__declspec(allocator)" faʻamatalaga ma le faʻatupuina o faʻamatalaga faʻapipiʻi faʻatasi e mafai ai ona e mataʻituina le taumafaina o mafaufauga i le Visual Studio siosiomaga;
  • Mo le gagana C, ua fa'aopoopoina le lagolago mo le "__FILE_NAME__" macro, e pei o le "__FILE__" macro, ae aofia ai na o le igoa faila e aunoa ma le ala atoa;
  • C ++ ua faʻalauteleina le lagolago mo faʻamatalaga avanoa avanoa e aofia ai vaega C ++ eseese, e aofia ai faʻamaufaʻailoga ma faʻataʻitaʻiga faʻataʻitaʻiga, ituaiga faʻasino, faʻasologa o le toe foʻi mai, mea faitino, galuega faʻapipiʻiina, faʻapipiʻi totonu, ma isi mea.
  • O gafatia e fesoʻotaʻi ma le lagolago mo OpenCL, OpenMP ma CUDA ua faʻalauteleina. E aofia ai le lagolago muamua mo le fa'aaofia fa'atasi o galuega fa'atino a le OpenCL (ua fa'aopoopo le fu'a "-fdeclare-opencl-builtins"), ua fa'atinoina le fa'aopoopoga o le cl_arm_integer_dot_product, ma ua fa'alauteleina meafaigaluega fa'apitoa;
  • Ua fa'aleleia atili le galuega a le su'esu'ega fa'amau ma fa'aopoopo fa'amaumauga i le fa'atinoina o su'esu'ega fa'amau. Faʻaopoopo fuʻa e faʻaalia ai avanoa siaki siaki ma filifiliga lagolago (“-analyzer-checker[-option]-fesoasoani”, “-analyzer-checker[-option]-fesoasoani-alpha” ma le “-analyzer-checker [-option]-fesoasoani "-tagata atiae"). Fa'aopoopoina le fu'a "-analyzer-werror" e fa'atatau i lapataiga o ni mea sese.
    Fa'aopoopo faiga fa'amaonia fou:

    • security.insecureAPI.DeprecatedOrUnsafeBufferHandling e iloa ai faiga le saogalemu mo le galue ma pa puipui;
    • osx.MIGCecker e suʻe mo le solia o tulafono ole MIG (Mach Interface Generator);
    • optin.osx.OSObjectCStyleCast e suʻe le XNU libkern mea faʻaliliuga sese;
    • apiModeling.llvm faʻatasi ma se seti o faʻataʻitaʻiga siaki galuega e iloa ai mea sese i le LLVM codebase;
    • Stabilized code mo le siakiina o mea C++ e leʻi amataina (UninitializedObject i le optin.cplusplus package);
  • O le clang-format utility ua faʻaopoopoina le lagolago mo le faʻatulagaina o code i le C # gagana ma maua ai le lagolago mo le faʻasologa o tulafono faʻapipiʻi faʻaogaina e Microsoft;
  • clang-cl, o se isi laina laina faʻatonuga e maua ai le fesoʻotaʻiga filifiliga-tulaga ma le cl.exe tuʻufaʻatasia o loʻo aofia i le Visual Studio, ua faʻaopoopoina heuristics e togafitia ai faila e le o iai e fai ma faʻatonuga laina ma faʻaalia se lapataiga talafeagai (mo se faʻataʻitaʻiga, pe a tamo'e "clang-cl /diagnostic:caret /c test.cc");
  • O se vaega tele o siaki fou ua faʻaopoopoina i le linter clang-tidy, e aofia ai siaki faʻaopoopo faʻapitoa i le OpenMP API;
  • Fa'alautele agava'a server tagitagi (Clang Server), lea e mafai ai ona faʻaogaina le faʻaogaina o le faʻailoga pito i tua, o le lagolago mo faʻasalalauga faʻatasi ma le code ua faʻaopoopoina (toe maua mai suiga, faʻalauteleina o faʻamatalaga taʻavale ma macro, liua o manoa sola i mea e leʻi sola ese), le mafai ona faʻaalia lapataiga mai Clang-tidy, faʻalauteleina diagnostics o mea sese i faila ulutala ma faʻaopoopo le mafai ona faʻaalia faʻamatalaga e uiga i le faʻasologa o ituaiga;

tele mea fou LLVM 9.0:

  • O se vaega fa'ata'ita'iga vaeluaga ua fa'aopoopoina i le LLD so'otaga, lea e mafai ai ona e vaevae se polokalame se tasi i ni vaega se tele, o ia mea ta'itasi o lo'o i totonu o se faila ELF ese'ese. O lenei vaega e mafai ai e oe ona faʻalauiloa le vaega autu o le polokalame, lea o le a faʻapipiʻiina isi vaega pe a manaʻomia i le taimi o le faʻagaioiga (mo se faʻataʻitaʻiga, e mafai ona e vavaeeseina le PDF viewer i totonu o se faila ese, lea e naʻo le utaina pe a tatalaina e le tagata faʻaoga le PDF. faila).

    LLD Linker aumai i luma i se setete talafeagai mo le fesoʻotaʻi o le fatu Linux mo le arm32_7, arm64, ppc64le ma le x86_64 architectures.
    Filifiliga fou "-" (output to stdout), "-[leai-]allow-shlib-undefined", "-undefined-glob", "-nmagic", "-omagic", "-dependent-library", " - z ifunc-noplt" ma le "-z masani-itulau-tele". Mo le fausaga o le AArch64, ua fa'aopoopoina fa'atonuga mo le BTI (Branch Target Indicator) ma le PAC (Pointer Authentication Code). Lagolago mo MIPS, RISC-V ma PowerPC platforms ua matua faʻaleleia. Faʻaopoopoina le lagolago muamua mo fesoʻotaʻiga malosi mo WebAssembly;

  • I le libc++ faatino galuega ssize, std :: is_constant_evaluated, std :: midpoint ma std :: lerp, metotia "luma" ma "tua" ua faaopoopo i le std :: span, uiga o ituaiga std :: is_unbounded_array ma std :: is_bounded_array ua faaopoopo , std gafatia ua fa'alauteleina: :atomic. Lagolago mo le GCC 4.9 ua fa'agata (e mafai ona fa'aoga i le GCC 5.1 ma fa'asalalauga fou). Faaopoopo lagolago WASI (WebAssembly System Interface, o se atinaʻe mo le faʻaogaina o le WebAssembly i fafo atu o le masini);
  • Ua fa'aopoopoina ni fa'atonuga fou. Fa'atagaina le liua o le memcmp vala'au i le bcmp i nisi tulaga. Fa'atino le fa'aogaina o le va'aiga o le siakiina o laulau oso e le mafai ona o'o atu i poloka ki lalo po'o le le fa'aogaina o fa'atonuga, mo se fa'ata'ita'iga, pe a vala'au galuega e leai se ituaiga;
  • O le pito i tua mo le fausaga RISC-V ua faʻamautuina, lea e le o toe faʻatulagaina e fai ma faʻataʻitaʻiga ma ua fausia e ala i le faaletonu. Tuuina atu le lagolago fa'atupu tulafono atoa mo le RV32I ma le RV64I fa'atonuga seti fa'asologa fa'atasi ma fa'aopoopoga MAFDC;
  • E tele faʻaleleia ua faia i tua mo X86, AArch64, ARM, SystemZ, MIPS, AMDGPU ma PowerPC fausaga. Mo se faʻataʻitaʻiga, mo le tusiata fale
    AArch64 faaopoopo le lagolago mo le SVE2 (Scalable Vector Extension 2) ma le MTE (Memory Tagging Extensions) faatonuga; i le ARM backend, lagolago mo le Armv8.1-M architecture ma le MVE (M-Profile Vector Extension) faʻaopoopoina. Lagolago mo le GFX10 (Navi) architecture ua faʻaopoopoina i le AMDGPU backend, galuega faʻaogaina gafatia e mafai ona faʻaogaina e ala i le faaletonu, ma o se pasi tuʻufaʻatasia ua faʻagaoioia. DPP (Fa'amatalaga-Parallel Primitives).

  • O le LLDB debugger ua i ai nei le fa'ailoga lanu mo tua ma fa'aopoopo le lagolago mo poloka DWARF4 debug_types ma DWARF5 debug_info;
  • Lagolago mo faila faila ma faila i le COFF ua faaopoopo i le llvm-objcopy ma le llvm-strip utilities.

puna: opennet.ru

Faaopoopo i ai se faamatalaga