Te tukunga o te huinga whakahiato LLVM 9.0

I muri i te ono marama o te whanaketanga i tukuna tuku kaupapa LLVM 9.0 — Ko nga taputapu hototahi ki te GCC (kaiwhakahirahira, kaiwhakatikatika me nga kaihanga waehere), te whakahiato i nga kaupapa ki te bitcode takawaenga o nga tohutohu mariko rite-RISC (miihini mariko taumata iti me te punaha arotautanga taumata-maha). Ka taea te huri i te pseudocode i hangaia ma te whakamahi i te kaitoha JIT ki nga tohutohu miihini tika i te wa e mahia ana te kaupapa.

Ko nga ahuatanga hou o te LLVM 9.0 ko te tango i te tohu hoahoa whakamatautau mai i te kaupapa RISC-V, tautoko C++ mo OpenCL, te kaha ki te wehe i tetahi kaupapa ki nga waahanga kua utaina ki roto i te LLD, me te whakatinanatanga o te "asm goto", whakamahia i roto i te waehere kernel Linux. libc++ i taapiri tautoko mo te WASI (WebAssembly System Interface), me te LLD i taapiri tautoko tuatahi mo te hononga hihiri a WebAssembly.

Whakapai ake i Clang 9.0:

  • Kua tapirihia te whakatinanatanga o te korero motuhake GCC "asm goto", e taea ai e koe te neke mai i te paraka raina-raina ki te tapanga i roto i te waehere C. Ko tenei ahuatanga e hiahiatia ana hei hanga i te pata Linux i roto i te aratau "CONFIG_JUMP_LABEL=y" ma te whakamahi i te Clang i runga i nga punaha me te hoahoanga x86_64. Ma te whai whakaaro ki nga whakarereketanga i taapirihia i nga tukunga o mua, ka taea te hanga te kernel Linux ki Clang mo te hoahoanga x86_64 (i mua ko te hanga mo te ringa, aarch64, ppc32, ppc64le me nga hoahoanga mips i tautokohia). I tua atu, kua hurihia nga kaupapa Android me ChromeOS ki te whakamahi i te Clang mo te hanga kernel, a kei te whakamatautau a Google i a Clang hei turanga matua mo te hanga kakano mo ana punaha Linux whakaputa. I te wa kei te heke mai, ka taea te whakamahi i etahi atu waahanga LLVM i roto i te tukanga hanga kernel, tae atu ki te LLD, llvm-objcopy, llvm-ar, llvm-nm, me llvm-objdump;
  • He tautoko whakamatautau mo te whakamahi C++17 i OpenCL. Ko nga ahuatanga motuhake ko te tautoko mo nga huanga mokowā wāhitau, te aukati i te hurihanga mokowā wāhitau ma te momo momo whakahaere, te whakarato i nga momo vector pera i OpenCL mo C, te aroaro o nga momo OpenCL motuhake mo nga whakaahua, huihuinga, hongere, aha atu.
  • Kua taapirihia nga haki whakahiato hou "-ftime-trace" me te "-ftime-trace-granularity=N" ki te whakaputa purongo mo te wa mahi o nga momo waahanga o te pito o mua (parapara, arataki) me te tuara (waahanga arotautanga). Ka tiakina te ripoata ki te whakatakotoranga json, he hototahi ki te chrome://tracing me te speedscope.app;
  • Tukatuka taapiri o te "__declspec(kaiwhakarato)" tohu me te whakatipuranga o nga korero patuiro e whai ana e taea ai e koe te aro turuki i te kai mahara i roto i te taiao Visual Studio;
  • Mo te reo C, kua taapirihia te tautoko mo te tonotono "__FILE_NAME__", he rite ki te tonotono "__FILE__", engari ko te ingoa konae anake kaore he ara katoa;
  • Kua whakawhānuihia e C++ te tautoko mo nga huanga mokowā wāhitau ki te kapi i nga momo ahuatanga C++, tae atu ki nga tawhā me nga tauira tautohe, nga momo tohutoro, te momo whakahoki, nga mea, nga mahi hanga-aunoa, nga kaiwhakahaere i roto, me era atu.
  • Ko nga kaha e pa ana ki te tautoko mo OpenCL, OpenMP me CUDA kua whakawhānuihia. Kei roto i tenei ko te tautoko tuatahi mo te whakaurunga o nga mahi OpenCL i hangaia (kua taapirihia te haki "-fdeclare-opencl-builtins"), kua whakatinanahia te toronga cl_arm_integer_dot_product, me nga taputapu tātaritanga kua whakawhānuihia;
  • Kua pai ake te mahi a te kaitirotiro pateko me te taapiri i nga tuhinga mo te mahi tātari pateko. Kua taapirihia nga haki hei whakaatu i nga waahanga kaitaki e waatea ana me nga whiringa tautoko ("-analyzer-checker[-option]-help", "-analyzer-checker[-option]-help-alpha" me "-analyzer-checker[-option] -help "-kaiwhakawhanake"). Kua taapirihia te haki "-analyzer-werror" hei tohu i nga whakatupato he hapa.
    Kua taapirihia nga aratau manatoko hou:

    • security.insecureAPI.DeprecatedOrUnsafeBufferHandling ki te tautuhi i nga mahi kino mo te mahi me nga kaipara;
    • osx.MIGChecker ki te rapu mo nga takahi i nga ture waea MIG (Mach Interface Generator);
    • optin.osx.OSObjectCStyleCast ki te kimi i nga huringa ahanoa XNU libkern hē;
    • apiModeling.llvm me te huinga o nga mahi arowhai whakatauira hei kite i nga hapa i roto i te LLVM codebase;
    • Waehere whakapumau mo te tirotiro i nga taonga C++ kaore i te tiimata (UninitializedObject i te kete optin.cplusplus);
  • Kua taapirihia e te whaipainga clang-format te tautoko mo te whakahōputu waehere i te reo C# me te tautoko i te momo whakatakotoranga waehere e whakamahia ana e Microsoft;
  • clang-cl, he atanga raina-whakahau rereke e whakarato ana i te hototahi taumata-kowhiringa me te whakahiato cl.exe a Visual Studio, kua taapiri heuristics ki te mahi i nga konae kore-kore hei whiringa raina whakahau me te whakaatu i tetahi whakatupato e rite ana (hei tauira, i te wa e rere ana " clang-cl /diagnostic:caret /c test.cc");
  • He nui te waahanga o nga arowhai hou kua taapirihia ki te tatangi-a-ringa, tae atu ki nga arowhai taapiri mo te OpenMP API;
  • Kua whakawhānuihia kaha tūmau clangd (Clang Server), i reira ka taea te aratau hanga papamuri ma te taunoa, kua taapirihia te tautoko mo nga mahi horopaki me te waehere (tango taurangi, whakaroahia nga whakamaramatanga aunoa me te tonotono, te hurihanga o nga aho kua mawhiti ki nga mea kore), te kaha ki te whakaatu nga whakatupato mai i te Clang-tidy, te whakawhanui i nga tātaritanga o nga hapa i roto i nga konae pane me te taapiri i te kaha ki te whakaatu korero mo te momo hierarchy;

Main nga mahi auaha LLVM 9.0:

  • Kua taapirihia he waahanga wehewehe whakamatautau ki te hono LLD, ka taea e koe te wehe i tetahi papatono ki etahi waahanga, kei roto ia ia i tetahi konae ELF motuhake. Ma tenei waahanga ka taea e koe te whakarewa i te waahanga matua o te kaupapa, ka utaina etahi atu waahanga e hiahiatia ana i te wa e mahi ana (hei tauira, ka taea e koe te wehe i te kaitirotiro PDF kua hangaia ki roto i tetahi konae motuhake, ka utaina noa ina whakatuwhera te kaiwhakamahi i te PDF. kōnae).

    LLD Hononga kawea ki mua ki tetahi ahua e tika ana mo te hono i te kakano Linux mo nga hoahoanga arm32_7, arm64, ppc64le me te x86_64.
    Kōwhiringa hōu "-" (putanga ki te stdout), "-[no-] tukua-shlib-undefined", "-undefined-glob", "-nmagic", "-omagic", "-dependent-library", " - z ifunc-noplt" me "-z noa-whārangi-rahi". Mo te hoahoanga AArch64, kua taapirihia te tautoko mo te BTI (Tautohu Tohu Tohu) me te PAC (Waehere Motuhēhēnga Tohu). Ko te tautoko mo nga papaaho MIPS, RISC-V me PowerPC kua tino pai ake. Kua taapirihia te tautoko tuatahi mo te hono hihiri mo WebAssembly;

  • I roto i te libc++ whakatinana taumahi ssize, std:: is_constant_evaluated, std::midpoint and std::lerp, tikanga "mua" me "muri" kua taapiri atu ki te std::span, nga huanga o nga momo std:: is_unbounded_array me std:: is_bounded_array kua tapiritia , kua whakawhänuihia ngä kaha std: :ngota. Kua whakakorehia te tautoko mo te GCC 4.9 (ka taea te whakamahi me te GCC 5.1 me nga putanga hou ake). He tautoko taapiri WASI (WebAssembly System Interface, he atanga mo te whakamahi i te WebAssembly i waho o te tirotiro);
  • Kua taapirihia nga arotautanga hou. Ka taea te huri i nga waea memcmp ki te bcmp i etahi ahuatanga. Kua whakatinanahia te awhe mokowhiti mo nga ripanga peke kaore e taea te toro atu nga poraka whakakao raro, karekau ranei e whakamahia nga tohutohu, hei tauira, i te wa e waea ana i nga mahi me te momo kore;
  • Ko te pito o muri mo te hoahoanga RISC-V kua whakapumau, kua kore e tuuhia hei whakamatautau, kua hangaia ma te taunoa. Ka whakarato i te tautoko whakangao waehere katoa mo nga momo huinga tohutohu RV32I me RV64I me nga toronga MAFDC;
  • He maha nga whakapainga kua mahia ki nga tuara mo X86, AArch64, ARM, SystemZ, MIPS, AMDGPU me nga hoahoanga PowerPC. Hei tauira, mo te hoahoanga
    I taapirihia e AArch64 te tautoko mo nga tohutohu SVE2 (Scalable Vector Extension 2) me MTE (Memory Tagging Extensions); i te tuara o te ARM, he tautoko mo te hoahoanga Armv8.1-M me te toronga MVE (M-Profile Vector Extension). Ko te tautoko mo te hoahoanga GFX10 (Navi) kua taapirihia ki te tuara AMDGPU, kua whakahohea nga kaha waea mahi ma te taunoa, a ka whakahohehia he paahitanga whakakotahi. DPP (Raraunga-Parallel Primitives).

  • Ko te kaiwhakairo LLDB inaianei he tohu tae mo nga tohu whakamuri me te taapiri tautoko mo nga DWARF4 debug_types me DWARF5 debug_info poraka;
  • Ko te tautoko mo nga konae ahanoa me nga konae whakahaere i te whakatakotoranga COFF kua taapiri atu ki nga taputapu llvm-objcopy me llvm-strip.

Source: opennet.ru

Tāpiri i te kōrero