Scaoileadh sraith tiomsaithe LLVM 9.0

Tar éis sé mhí d'fhorbairt curtha i láthair scaoileadh tionscadail LLVM 9.0 — Uirlisí atá comhoiriúnach le GCC (tiomsaitheoirí, optimizers agus gineadóirí cód), cláir a thiomsú i gcód giotán idirmheánach de threoracha fíorúla cosúil le RISC (meaisín fíorúil íseal-leibhéil le córas optamaithe il-leibhéil). Is féidir an pseudocode a ghintear a thiontú trí úsáid a bhaint as tiomsaitheoir JIT go treoracha meaisín go díreach ag an am a dhéantar an clár.

Áirítear ar ghnéithe nua LLVM 9.0 an chlib deartha turgnamhach a bhaint den sprioc-ardán RISC-V, tacaíocht C ++ do OpenCL, an cumas clár a roinnt ina chodanna atá luchtaithe go dinimiciúil i LLD, agus an “asm fuair", a úsáidtear sa chód eithne Linux. Chuir libc++ tacaíocht bhreise le WASI (Comhéadan Córas WebAssembly), agus chuir LLD tacaíocht tosaigh le haghaidh nascadh dinimiciúil WebAssembly.

Feabhsúcháin i gClang 9.0:

  • Curtha leis cur i bhfeidhm na slonn a bhaineann go sonrach le GCC "asm fuair“, a ligeann duit bogadh ó bhloc inlíne cóimeálaí go lipéad i gcód C. Tá an ghné seo ag teastáil chun an eithne Linux a thógáil sa mhód “CONFIG_JUMP_LABEL=y” ag baint úsáide as Clang ar chórais le hailtireacht x86_64. Ag cur na n-athruithe a cuireadh leis in eisiúintí roimhe seo san áireamh, is féidir an eithne Linux a thógáil anois i Clang don ailtireacht x86_64 (roimhe seo níor thacaigh ach le tógáil don arm, aarch64, ppc32, ppc64le agus ailtireachtaí mips). Thairis sin, tá tionscadail Android agus ChromeOS tiontaithe cheana féin chun Clang a úsáid le haghaidh tógáil eithne, agus tá Google ag tástáil Clang mar an príomh-ardán le haghaidh kernels a thógáil dá chórais Linux táirgthe. Sa todhchaí, is féidir comhpháirteanna LLVM eile a úsáid sa phróiseas tógála eithne, lena n-áirítear LLD, llvm-objcopy, llvm-ar, llvm-nm, agus llvm-objdump;
  • Cuireadh tacaíocht thurgnamhach leis chun C++17 a úsáid in OpenCL. I measc na ngnéithe sonracha tá tacaíocht le haghaidh tréithe spáis seoltaí, bac a chur ar chomhshó spás seoltaí ag oibreoirí cineál réitigh, cineálacha veicteora a sholáthar mar atá in OpenCL do C, láithreacht cineálacha sonracha OpenCL le haghaidh íomhánna, imeachtaí, cainéil, etc.
  • Cuireadh bratacha tiomsaitheora nua “-ftime-trace” agus “-ftime-trace-granularity=N” leis chun tuarascáil a ghiniúint ar am forghníomhaithe céimeanna éagsúla den aghaidh (parsáil, túsú) agus inneall (céimeanna optamaithe). Sábháiltear an tuarascáil i bhformáid json, comhoiriúnach le chrome://tracing agus speedscope.app;
  • Cuireadh próiseáil bhreise ar an sonróir “__declspec(allocator)” agus giniúint faisnéise dífhabhtaithe a théann leis a ligeann duit monatóireacht a dhéanamh ar chaitheamh cuimhne i dtimpeallacht Amharc-Stiúideo;
  • Maidir leis an teanga C, tá tacaíocht curtha leis don mhacra “__FILE_NAME__”, atá cosúil leis an macra “__FILE__”, ach nach n-áirítear ach ainm an chomhaid gan an chonair iomlán;
  • Tá tacaíocht leathnaithe ag C++ le haghaidh tréithe spáis seoltaí chun gnéithe C++ éagsúla a chlúdach, lena n-áirítear patrúin paraiméadar agus argóinte, cineálacha tagartha, tátal cineál fillte, réada, feidhmeanna uathghinte, oibreoirí ionsuite, agus go leor eile.
  • Leathnaíodh na cumais a bhaineann le tacaíocht do OpenCL, OpenMP agus CUDA. Áirítear leis seo tacaíocht tosaigh do chuimsiú intuigthe feidhmeanna OpenCL ionsuite (tá an bhratach “-fdeclare-opencl-builtins” curtha leis), tá an síneadh cl_arm_integer_dot_product curtha i bhfeidhm, agus leathnaíodh uirlisí diagnóiseacha;
  • Feabhsaíodh obair an anailísí statach agus cuireadh leis an doiciméadú maidir le hanailís statach a dhéanamh. Cuireadh bratacha leis chun na modúil seiceála atá ar fáil agus na roghanna tacaithe a thaispeáint (“-analyzer-checker[-option]-help”, “-analyzer-checker[-option]-help-alpha” agus “-analyzer-checker[-option]-help “-forbróir”). Cuireadh bratach “-analyzer-werror” leis chun rabhaidh a láimhseáil mar earráidí.
    Cuireadh modhanna fíorúcháin nua leis:

    • slándáil.neamhshábháilteAPI.Láimhseáil Maolán Neamhshábháilte chun cleachtais neamhshábháilte a shainaithint maidir le hoibriú le maoláin;
    • osx.MIGCchecker chun cuardach a dhéanamh ar sháruithe ar rialacha glaonna MIG (Gineadóir Comhéadain Mach);
    • optin.osx.OSObjectCStyleCast chun tiontuithe oibiachta libkern XNU mícheart a aimsiú;
    • apiModeling.llvm le sraith feidhmeanna seiceála samhaltaithe chun earráidí sa bhunachar cód LLVM a bhrath;
    • Cód cobhsaithe chun oibiachtaí C++ neamhthionscanta a sheiceáil (UninitializedObject sa phacáiste optin.cplusplus);
  • Tá tacaíocht curtha leis ag an bhfóntas i bhformáid chlang chun cód a fhormáidiú sa teanga C# agus cuireann sé tacaíocht ar fáil don stíl formáidithe cóid a úsáideann Microsoft;
  • clang-cl, comhéadan líne ordaithe eile a sholáthraíonn comhoiriúnacht leibhéal rogha leis an tiomsaitheoir cl.exe atá san áireamh in Visual Studio, tá heorastaíocht curtha leis aige chun déileáil le comhaid nach bhfuil ann mar roghanna ordú-líne agus rabhadh comhfhreagrach a thaispeáint (mar shampla, nuair a bhíonn "clang-cl /diagnostic :caret /c test.cc" á rith);
  • Tá cuid mhór de na seiceálacha nua curtha le lintéar clang-slachtmhar, lena n-áirítear seiceálacha breise a bhaineann go sonrach leis an OpenMP API;
  • Leathnaithe cumais freastalaí clangd (Freastalaí Clang), ina bhfuil an modh tógála innéacs cúlra cumasaithe de réir réamhshocraithe, tá tacaíocht do ghníomhartha comhthéacsúla le cód curtha leis (aisghabháil athraitheach, leathnú sainmhínithe uathoibríoch agus macra, comhshó teaghráin éalaigh go cinn neamhéalaithe), an cumas a thaispeáint rabhaidh ó Clang-tidy, diagnóisic mhéadaithe earráidí i gcomhaid ceanntásca agus cuireadh leis an gcumas faisnéis a thaispeáint faoin ordlathas cineáil;

An príomh- nuálaíochtaí LLVM 9.0:

  • Tá gné dheighilt thurgnamhach curtha leis an nascóir LLD, a cheadaíonn duit clár amháin a roinnt ina chodanna éagsúla, agus gach ceann acu suite i gcomhad ELF ar leith. Ligeann an ghné seo duit príomhchuid an chláir a sheoladh, a luchtóidh comhpháirteanna eile de réir mar is gá le linn na hoibríochta (mar shampla, is féidir leat an breathnóir PDF ionsuite a scaradh i gcomhad ar leith, nach luchtófar ach amháin nuair a osclaíonn an t-úsáideoir an PDF comhad).

    Nascóir LLD tugtha chun tosaigh chuig staid atá oiriúnach chun an eithne Linux a nascadh le haghaidh ailtireachtaí arm32_7, arm64, ppc64le agus x86_64.
    Roghanna nua " -" (aschur go stdout), "-[no-]allow-shlib-undefined", "-undefined-glob", "-nmagic", "-omagic", "-dependent-library", " - z ifunc-noplt" agus "-z common-page-size". Maidir le hailtireacht AArch64, tá tacaíocht do threoracha BTI (Táscaire Sprioc an Bhrainse) agus PAC (Cód Fíordheimhnithe Pointe) curtha leis. Tá feabhas suntasach tagtha ar thacaíocht d’ardáin MIPS, RISC-V agus PowerPC. Tacaíocht tosaigh curtha leis le haghaidh nascadh dinimiciúil do WebAssembly;

  • I libc++ curtha i bhfeidhm feidhmeanna ssize, std::is_constant_valuated, std::lárphointe agus std::lerp, modhanna “tosaigh” agus “cúl” curtha le std::span, tréithe cineálacha std::is_unbounded_array agus std::is_bounded_array curtha leis , leathnaíodh cumais STD: :adamhach. Tá deireadh le tacaíocht do GCC 4.9 (is féidir é a úsáid le GCC 5.1 agus eisiúintí níos nuaí). Tacaíocht curtha leis WASI (Comhéadan Córas WebAssembly, comhéadan chun WebAssembly a úsáid lasmuigh den bhrabhsálaí);
  • Tá leas iomlán a bhaint as nua curtha leis. Cumasaíodh glaonna memcmp go bcmp i gcásanna áirithe. Cur i bhfeidhm seiceáil raoin a fhágáil ar lár le haghaidh táblaí léime ina bhfuil lasc-bhloic níos ísle dosroichte nó nuair nach n-úsáidtear treoracha, mar shampla, agus feidhmeanna á nglao ar neamhní;
  • Tá an t-innill don ailtireacht RISC-V cobhsaithe, nach bhfuil suite mar thurgnamhach a thuilleadh agus a tógadh de réir réamhshocraithe. Soláthraíonn sé tacaíocht iomlán giniúna cód le haghaidh leagan treoracha RV32I agus RV64I le síntí MAFDC;
  • Tá go leor feabhsuithe déanta ar na hinnill le haghaidh ailtireachtaí X86, AArch64, ARM, SystemZ, MIPS, AMDGPU agus PowerPC. Mar shampla, le haghaidh ailtireacht
    Chuir AArch64 tacaíocht leis do threoracha SVE2 (Síneadh Veicteoir Inscálaithe 2) agus MTE (Eisínteachtaí Clibeála Cuimhne); san inneall ARM, cuireadh tacaíocht don ailtireacht Armv8.1-M agus don síneadh MVE (M-Próifíl Veicteoir Síneadh). Cuireadh tacaíocht d'ailtireacht GFX10 (Navi) le hinnill AMDGPU, cumasaítear cumais glaonna feidhm de réir réamhshocraithe, agus cuirtear pas comhcheangailte i ngníomh DPP (Sonraí-Primitives Comhthreomhar).

  • Tá béim dathanna ag an dífhabhtóir LLDB anois le haghaidh cúlrianta agus tacaíocht bhreise do na bloic debug_info DWARF4 agus DWARF5 debug_info;
  • Tá tacaíocht do chomhaid réad agus inrite i bhformáid COFF curtha leis na fóntais llvm-objcopy agus llvm-stiall.

Foinse: oscailtenet.ru

Add a comment