Te tukunga o te huinga whakahiato LLVM 11.0

I muri i te ono marama o te whanaketanga i tukuna tuku kaupapa LLVM 11.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 te huringa matua i roto i te tukunga hou ko te whakauru o taha, mua mo te reo Fortran. Kei te tautoko a Flang i a Fortran 2018, OpenMP 4.5 me OpenACC 3.0, engari kaore ano kia oti te whakawhanaketanga o te kaupapa, a, ko te pito o mua he whakawhäitihia ki te tohu tohu me te tirotiro mo te tika. Ko te whakangao o te waehere takawaenga LLVM kaore ano kia tautokona me te whakaputa i nga konae ka taea te whakahaere, ka hangaia te waehere kanoona ka tukuna ki tetahi kaiwhakaiti Fortran o waho.

Whakapai ake i Clang 11.0:

  • Kua taapirihia te kaha ki te whakaora i te rakau wetereo waitara (AST) mo te waehere C++ pakaru, ka taea te whakamahi ki te tarai i nga hapa me te whakarato korero taapiri ki nga taputapu o waho penei i te clang-tidy me te clangd. Ka taea te ahuatanga ma te taunoa mo te waehere C++ ka whakahaeretia ma te "-Xclang -f[no-]whakaora-ast" kōwhiringa.
  • Kua taapirihia nga aratau tātaritanga hou:
    • Ko te "-Wpointer-to-int-cast" he roopu whakatupato mo te maka i nga atatohu ki tetahi momo int int e kore e uru ki nga uara katoa ka taea.
    • “-Wuninitialized-const-tohutoro” - whakatupato mo te whakawhiti i nga taurangi kaore i timatahia i roto i nga tawhā mahi e whakaae ana ki nga tohenga tohutoro me te huanga "const".
    • "-Wimplicit-const-int-float-conversion" - kua whakahohea e te whakatupato taunoa mo te hurihanga o te tino tuturu ki te momo tauoti.
  • Mo te papaahi ARM, ka whakaratohia nga mahi C i hangaia ki roto i te whakahiato (Rorohiko), ka whakakapihia e nga tohutohu vector pai Arm v8.1-M MVE me CDE. Ko nga mahi e waatea ana kua tautuhia i roto i nga konae pane arm_mve.h me arm_cde.h.
  • Kua tapirihia he huinga momo integer toroa _ExtInt(N), ka taea e koe te hanga momo ehara i te maha o nga mana o te rua, ka taea te whakahaere pai i runga i te FPGA/HLS. Hei tauira, _ExtInt(7) ka tautuhi i te momo tauoti e 7 nga moka.
  • He tonotono taapiri e tautuhi ana i te tautoko mo nga mahi C kua hanga-roto i runga i nga tohutohu ARM SVE (Whakatairanga Vector Extension):
    __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. Hei tauira, ka tautuhia te tonotono __ARM_FEATURE_SVE i te wa e whakaputa ana i te waehere AArch64 ma te tautuhi i te whiringa raina whakahau "-march=armv8-a+sve".

  • Ko te haki "-O" kua tohua inaianei me te aratau arotautanga "-O1" hei utu mo "-O2".
  • Kua taapirihia nga haki whakahiato hou:
    • "-fstack-clash-protection" - ka taea te whakamarumaru nga whakawhitinga o te puranga me te puranga.
    • "-ffp-exception-behavior={ignore,maytrap,strict}" - ka taea e koe te kowhiri i te aratau kaihautu motuhake mo nga tau ira maanu.
    • "-ffp-model={precise,strict,fast}" - Whakamaamaa te uru ki te raupapa o nga whiringa motuhake mo nga tau ira maanu.
    • "-fpch-codegen" me "-fpch-debuginfo" ki te whakaputa i te pane whakahiato o mua (PCH) me nga konae ahanoa motuhake mo te waehere me te debuginfo.
    • "-fsanitize-coverage-allowlist" me te "-fsanitize-coverage-blocklist" mo te tirotiro i te kapinga whakamatautau i nga rarangi ma me te pango.
    • “-mtls-size={12,24,32,48}” ki te tīpako i te rahi TLS (rokiroki miro-rohe).
    • "-menable-experimental-extension" kia taea ai nga toronga RISC-V whakamatautau.
  • Ko te aratau taunoa mo C ko te "-fno-common", e taea ai te uru pai ake ki nga taurangi o te ao i runga i etahi papa.
  • Kua nukuhia te keteroki kōwae taunoa mai i /tmp ki te whaiaronga ~/.cache. Hei whakakore, ka taea e koe te whakamahi i te haki "-fmodules-cache-path=".
  • Ko te paerewa reo C taunoa kua whakahoutia mai i te gnu11 ki te gnu17.
  • Kua taapirihia te tautoko tuatahi mo te toronga GNU C "asm rōraina»ki te taapiri i nga whakauru whakauru. Kei te wetewetehia te toronga, engari kaore i te tukatukahia i tetahi huarahi.
  • Ko nga kaha e pa ana ki te tautoko OpenCL me CUDA kua whakawhānuihia. He tautoko taapiri mo nga tātaritanga poraka OpenCL 2.0 me te whakatinana i nga waahanga OpenMP 5.0 hou.
  • Kua taapirihia te whiringa IndentExternBlock ki te hangai-whakaahua taputapu mo te tirohanga i roto i nga poraka "C" o waho me "C++" o waho.
  • Kua pai ake te kaitirotiro pateko ki te whakahaere i nga kaihanga tuku iho i C++. Kua taapirihia nga arowhai hou alpha.core.C11Lock me alpha.fuchsia.Lock ki te tirotiro mo nga raka, alpha.security.cert.pos.34c ki te kite i te whakamahinga haumaru o te putenv, webkit.NoUncountedMemberChecker me webkit.RefCntblBaseVirtualDtor ki te kimi raruraru me nga momo kore tatau, alpha .cplusplus .SmartPtr ki te tirotiro mo te whakakorenga tohu tohu atamai kore.
  • I roto i te linter clang-tidy tāpirihia he waahanga nui o nga haki hou.
  • Kua pai ake te mahi a te clangd caching server (Clang Server) me te taapiri i nga kaha tātaritanga hou.

Main nga mahi auaha LLVM 11.0:

  • Kua hurihia te punaha hanga ki te whakamahi i te Python 3. Ki te kore te Python 3 i te waatea, ka taea te huri ki te whakamahi i te Python 2.
  • Ko te pito o mua me te whakahiato mo te reo Haere (llgo) kua whakakorehia mai i te tukunga, tera pea ka whakatikatikahia a muri ake nei.
  • Ko te huanga vector-function-abi-variant kua taapirihia ki te tohu takawaenga (IR) hei whakaahua i te mapi i waenga i nga mahi scalar me te vector hei whakangao waea. Mai i llvm::VectorType e rua nga momo vector motuhake llvm::FixedVectorType me llvm::ScalableVectorType.
  • Ko te peka i runga i nga uara udef me te tuku i nga uara undef ki nga mahi whare pukapuka paerewa ka mohiotia he whanonga kore-tautuhia. IN
    Ka taea e memset/memcpy/memmove te whakawhiti i nga tohu undef, engari mena he kore te tawhā me te rahi.

  • Kua taapirihia e te LLJIT te tautoko mo te mahi arawhiti pateko na roto i te LLJIT::initialize me te LLJIT::deinitialize tikanga. Kua whakatinanahia te kaha ki te taapiri i nga whare pukapuka pateko ki JITDylib ma te whakamahi i te akomanga StaticLibraryDefinitionGenerator. Kua taapirihia te C API mo ORCv2 (API mo te hanga JIT compilers).
  • Ko te tautoko mo te Cortex-A64, Cortex-A34, Cortex-A77 me Cortex-X78 kua taapirihia ki te tuara mo te hoahoanga AArch1. I whakatinanahia te ARMv8.2-BF16 (BFloat16) me te ARMv8.6-A toronga, tae atu ki te RMv8.6-ECV (Whakanuia te Whakaaetanga Kaitatau), ARMv8.6-FGT (Ngā Rore Paari Pai), ARMv8.6-AMU (Marohiko Aroturuki Mahi) me ARMv8.0-DGH (Tiwhiringa kohikohi Raraunga). Ko te kaha ki te whakaputa waehere mo nga mahi kua oti te hanga-nga here ki nga tohutohu vector SVE ka whakaratohia.
  • Ko te tautoko mo te Cortex-M55, Cortex-A77, Cortex-A78 me Cortex-X1 tukatuka kua taapirihia ki te tuara mo te hoahoanga ARM. Kua whakatinanahia nga toronga
    Armv8.6-A Matrix Multiply me RMv8.2-AA32BF16 BFloat16.

  • Ko te tautoko mo te hanga waehere mo nga tukatuka POWER10 kua taapirihia ki te tuara mo te hoahoanga PowerPC. Kua whakawhänuihia nga arotautanga o te kopae, kua pai ake te tautoko i te waahi maanu.
  • Ko te tuara mo te hoahoanga RISC-V ka taea te whakaae ki nga papaki e tautoko ana i nga huinga tohutohu whakawhanui whakamatautau kaore ano kia whakamanahia.
  • Ko te tuara mo te hoahoanga AVR kua whakawhitia mai i te waahanga whakamatautau ki te pumau, kei roto i te tohatoha taketake.
  • Ko te tuara mo te hoahoanga x86 e tautoko ana i nga tohutohu a Intel AMX me TSXLDTRK. He whakamarumaru taapiri mai i nga whakaeke LVI (Utaina Uara Injection), me te whakamahi hoki i tetahi tikanga Whakapaa Taha Whakatupato Whanui ki te aukati i nga whakaeke i puta mai i nga mahi whakapae i runga i te PTM.
  • I te tuara mo te hoahoanga SystemZ, kua taapirihia te tautoko mo MemorySanitizer me LeakSanitizer.
  • He tautoko taapiri mo te konae pane me nga taumau pangarau ki Libc++ .
  • Kua whakawhānuihia Nga kaha hononga LLD. He pai ake te tautoko mo te whakatakotoranga ELF, tae atu ki nga whiringa taapiri "--lto-emit-asm", "--lto-whole-program-visibility", "-print-archive-stats", "-shuffle-sections", " -thinlto- single-module", "-unique", "-rosegment", "-threads=N". He taapiri "--time-trace" hei tiaki i te tohu ki tetahi konae, ka taea te tātari ma te atanga chrome://tracing i Chrome.

Source: opennet.ru

Tāpiri i te kōrero