Scaoileadh sraith tiomsaithe LLVM 11.0

Tar éis sé mhí d'fhorbairt curtha i láthair scaoileadh tionscadail LLVM 11.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.

Ba é an príomh-athrú ar an eisiúint nua ná cuimsiú na Taobh, tosaigh don teanga Fortran. Tacaíonn Flang le Fortran 2018, OpenMP 4.5 agus OpenACC 3.0, ach níl forbairt an tionscadail críochnaithe fós agus tá an deireadh tosaigh teoranta do pharsáil cód agus seiceáil le haghaidh ceart. Ní thacaítear fós le giniúint cód idirmheánach LLVM agus chun comhaid inrite a ghiniúint, gintear cód canónach agus cuirtear ar aghaidh chuig tiomsaitheoir seachtrach Fortran é.

Feabhsúcháin i gClang 11.0:

  • Cuireadh leis an gcumas an crann comhréire teibí a aischur (AST) le haghaidh cód C++ briste, ar féidir é a úsáid chun cabhrú le hearráidí a dhiagnóisiú agus a chuireann faisnéis bhreise ar fáil d’fhóntais sheachtracha ar nós clang- tidy agus clangd. Tá an ghné cumasaithe de réir réamhshocraithe do chód C++ agus rialaítear é trí na roghanna "-Xclang -f[no-]recovery-ast".
  • Cuireadh modhanna diagnóiseacha nua leis:
    • Is éard atá i gceist le “-Wpointer-to-int-cast” grúpa rabhaidh maidir le leideanna a réitigh chuig cineál slánuimhir nach bhfreastalaíonn ar gach luach féideartha.
    • “-Wuninitialized-const-reference” - rabhadh faoi athróga neamh-tionscanta a rith i bparaiméadar feidhme a ghlacann le hargóintí tagartha leis an tréith “const”.
    • "-Wimplicit-const-int-float-conversion" - cumasaithe le rabhadh réamhshocraithe maidir le comhshó intuigthe réadtairiseach go cineál slánuimhir.
  • Maidir leis an ardán ARM, soláthraítear feidhmeanna C atá ionsuite sa tiomsaitheoir (Intreacha), in ionad treoracha éifeachtacha veicteoir Lámh v8.1-M MVE agus CDE. Sainmhínítear na feidhmeanna atá ar fáil sna comhaid ceanntásca arm_mve.h agus arm_cde.h.
  • Curtha leis sraith de chineálacha slánuimhir sínte _ExtInt(N), a ligeann duit cineálacha a chruthú nach iolraí cumhachtaí de dhá cheann iad, ar féidir iad a phróiseáil go héifeachtach ar FPGA/HLS. Mar shampla, _ExtInt(7) sainmhínítear cineál slánuimhir comhdhéanta de 7 ngiotán.
  • Macraí breise a shainíonn tacaíocht d’fheidhmeanna ionsuite C bunaithe ar threoracha ARM SVE (Síneadh Veicteoir Inscálaithe):
    __ARM_FEATURE_SVE, __ARM_FEATURE_SVE_BF16,
    __ARM_FEATURE_SVE_MATMUL_FP32, __ARM_FEATURE_SVE_MATMUL_FP64,
    _ARM_FEATURE_SVE_MATMUL_INT8,
    __ARM_FEATURE_SVE2, __ARM_FEATURE_SVE2_AES,
    _ARM_FEATURE_SVE2_BITPERM,
    _ARM_FEATURE_SVE2_SHA3,
    _ARM_FEATURE_SVE2_SM4. Mar shampla, sainmhínítear an macra __ARM_FEATURE_SVE agus cód AArch64 á ghiniúint trí rogha na n-orduithe "-march=armv8-a+sve" a shocrú.

  • Aithnítear an bhratach "-O" anois leis an modh leas iomlán a bhaint "-O1" in ionad "-O2".
  • Cuireadh bratacha tiomsaitheora nua leis:
    • "-fstack-clash-protection" - ar chumas cosaint i gcoinne crosbhealaí cruacha agus gcarn.
    • "-ffp-exception-behavior={neamhaird,maytrap,strict}" - is féidir leat an mód láimhseálaí eisceachta a roghnú le haghaidh uimhreacha snámhphointe.
    • " -ffp-model = {beacht, docht, go tapa}" - Simplíonn rochtain ar shraith sainroghanna le haghaidh uimhreacha snámhphointe.
    • "-fpch-codegen" agus "-fpch-debuginfo" chun ceanntásc réamhthiomsaithe (PCH) a ghiniúint le comhaid oibiachta ar leith le haghaidh cód agus debuginfo.
    • “-fsanitize-coverage-allowlist” agus “-fsanitize-coverage-blocklist” chun liostaí bán agus dubh a thástáil le clúdach.
    • “-mtls-size={12,24,32,48}” chun an méid TLS (stóráil snáithe-áitiúil) a roghnú.
    • "-menable-experimental-extension" chun síntí turgnamhacha RISC-V a chumasú.
  • Is é "-fno-common" an modh réamhshocraithe le haghaidh C, rud a cheadaíonn rochtain níos éifeachtaí ar athróga domhanda ar ardáin áirithe.
  • Bogadh taisce an mhodúil réamhshocraithe ó /tmp chuig an eolaire ~/.cache. Chun é a shárú, is féidir leat an bhratach “-fmodules-cache-path =” a úsáid.
  • Nuashonraíodh an caighdeán teanga C réamhshocraithe ó gnu11 go gnu17.
  • Cuireadh réamhthacaíocht leis le haghaidh síneadh GNU C "asm inlíne» Ionsáigh cóimeálaí a chur leis. Tá an síneadh fós á anailísiú, ach níl sé á phróiseáil ar bhealach ar bith.
  • Leathnaíodh na cumais a bhaineann le tacaíocht OpenCL agus CUDA. Tacaíocht bhreise le haghaidh diagnóisic bloc OpenCL 2.0 agus gnéithe nua OpenMP 5.0 curtha i bhfeidhm.
  • Cuireadh rogha IndentExternBlock leis an bhfóntas clang-format le haghaidh ailíniú laistigh de na bloic sheachtracha "C" agus seachtrach "C ++".
  • D'fheabhsaigh an anailísí statach láimhseáil na dtógálaithe a fuarthas le hoidhreacht in C++. Cuireadh seiceálacha nua leis alpha.core.C11Lock agus alpha.fuchsia.Lock le seiceáil le haghaidh glais, alpha.security.cert.pos.34c chun úsáid neamhshábháilte putenv, webkit.NoUncountedMemberChecker agus webkit.RefCntblBaseVirtualDtor a bhrath chun fadhbanna le cineálacha neamhchuntasacha, alpha a bhrath .cplusplus .SmartPtr le seiceáil le haghaidh dereference pointeoir cliste nialasach.
  • I linter clang-slachtmhar curtha leis cuid mhór de na seiceálacha nua.
  • Tá feidhmíocht feabhsaithe ag an bhfreastalaí clangd caching (Freastalaí Clang) agus chuir sé cumais dhiagnóiseacha nua leis.

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

  • Athraíodh an córas tógála go Python 3 a úsáid. Mura bhfuil Python 3 ar fáil, is féidir filleadh ar Python 2 a úsáid.
  • Tá an foirceann tosaigh leis an tiomsaitheoir don teanga Go (llgo) eisiata ón scaoileadh, agus féadfar é a athstruchtúrú amach anseo.
  • Tá an tréith veicteoir-feidhm-abi-athraitheach curtha leis an léiriú idirmheánach (IR) chun cur síos a dhéanamh ar an léarscáiliú idir feidhmeanna scálach agus veicteora chun glaonna a veicteoiriú. Ó llvm::Cineál Veicteoir tá dhá chineál veicteora ar leith llvm::FixedVectorType agus llvm::InscálaitheVectorType.
  • Aithnítear brainse bunaithe ar luachanna udef agus luachanna undef a rith chuig feidhmeanna caighdeánacha leabharlainne mar iompar neamhshainithe. IN
    Ceadaíonn memset/memcpy/memmove leideanna neamhchosanta a rith, ach más é an paraiméadar le méid náid.

  • Tá tacaíocht bhreise ag LLJIT chun tús a chur le statacht a dhéanamh tríd an LLJIT::tús a chur ar agus LLJIT::dí-initialize methods. Tá an cumas leabharlanna statacha a chur le JITDylib ag baint úsáide as an rang StaticLibraryDefinitionGenerator curtha i bhfeidhm. Cuireadh C API leis le haghaidh ORCv2 (API le haghaidh tiomsaitheoirí JIT a thógáil).
  • Tá tacaíocht do phróiseálaithe Cortex-A64, Cortex-A34, Cortex-A77 agus Cortex-X78 curtha leis an inneall don ailtireacht AArch1. Cuireadh síntí ARMv8.2-BF16 (BFloat16) agus ARMv8.6-A i bhfeidhm, lena n-áirítear RMv8.6-ECV (Fíorúiliú Feabhsaithe Frith-fhíorúnaithe), ARMv8.6-FGT (Gaistí Fine Grained), ARMv8.6-AMU (Fíorúiliú Monatóirí Gníomhaíochta) agus ARMv8.0-DGH (Leid bailithe sonraí). Soláthraítear an cumas cód a ghiniúint le haghaidh feidhmeanna ionsuite ceangail le treoracha veicteora SVE.
  • Tá tacaíocht do phróiseálaithe Cortex-M55, Cortex-A77, Cortex-A78 agus Cortex-X1 curtha leis an inneall don ailtireacht ARM. Síntí curtha i bhfeidhm
    Armv8.6-A Maitrís Iolrú agus RMv8.2-AA32BF16 BFloat16.

  • Tá tacaíocht do ghiniúint cód do phróiseálaithe POWER10 curtha leis an inneall don ailtireacht PowerPC. Leathnaíodh leas iomlán a bhaint as lúb agus feabhsaíodh an tacaíocht snámhphointe.
  • Ceadaíonn an t-innill don ailtireacht RISC-V glacadh le paistí a thacaíonn le tacair teagaisc leathnaithe turgnamhacha nach bhfuil faofa go hoifigiúil fós.
  • Aistríodh an t-inneall don ailtireacht AVR ón gcatagóir turgnamhach go cobhsaí, san áireamh sa dáileadh bunúsach.
  • Tacaíonn an t-inneall le haghaidh ailtireacht x86 le treoracha Intel AMX agus TSXLDTRK. Cosaint bhreise in aghaidh ionsaithe LVI (Instealladh Luach Luchtaigh), agus cuireann sé meicníocht ghinearálta um Shochtadh Taobh Éifeacht Forghníomhaithe Amhantrach i bhfeidhm freisin chun bac a chur ar ionsaithe a dhéantar mar gheall ar fhorghníomhú amhantrach oibríochtaí ar an LAP.
  • In inneall ailtireacht SystemZ, tá tacaíocht do MemorySanitizer agus LeakSanitizer curtha leis.
  • Tacaíocht bhreise do chomhad ceanntásca le tairisigh matamaitice chuig Libc++ .
  • Leathnaithe Cumais nascóirí LLD. Tacaíocht fheabhsaithe don fhormáid ELF, lena n-áirítear na roghanna breise "--lto-emit-asm", "--lto-whole-program-visibility", "-print-archive-stats", "-shuffle-sections", " -thinlto- modúl singil", "-unique", "-rosegment", "-threads=N". Cuireadh rogha "--time-trace" leis chun an rian a shábháil i gcomhad, ar féidir é a anailísiú ansin tríd an gcomhéadan rianaithe chrome:// in Chrome.

Foinse: oscailtenet.ru

Add a comment