Kuburitswa kweLLVM 16.0 compiler suite

Mushure memwedzi mitanhatu yebudiriro, kuburitswa kwechirongwa cheLLVM 16.0 kwakaunzwa - chishandiso chinoenderana neGCC (macompilers, optimizers uye macode jenareta) anounganidza zvirongwa kuita yepakati bitcode yeRISC-senge mirairo chaiyo (yakaderera-level virtual muchina une Multi-level optimization system). Iyo pseudocode inogadzirwa inogona kushandurwa uchishandisa JIT compiler kuita mirairo yemuchina zvakananga panguva yekuitwa kwechirongwa.

Kuvandudza kukuru muClang 16.0:

  • Iyo yakasarudzika C++/ObjC++ chiyero ndeye gnu++17 (yaimbova gnu+++14), zvinoreva kuti C++17 maficha ane GNU ekuwedzera anotsigirwa nekusarudzika. Kudzosa maitiro ekare, unogona kushandisa "-std=gnu++14" sarudzo.
  • Akamisikidzwa epamberi maficha ane chekuita neC ++ 20 chiyero:
    • Zvine maitikiro asina basa akakosha enhengo,
    • kutora zvisungo zvakarongeka mu lambda mabasa,
    • Equality operator mukati mekutaura,
    • Sarudzo yekusiya iyo typename keyword mune mamwe mamiriro,
    • Hurukuro yeaggregate inokwana mumaparentheses (β€œAggr(val1, val2)”).
  • Zvimiro zvinotsanangurwa mune ramangwana C ++ 2b chiyero chakaitwa:
    • Inotenderwa kuisa mavara pamagumo emashoko akasanganiswa,
    • static operator (),
    • static mushandisi[],
    • Kuenderana nechar8_t mhando inovimbiswa,
    • Uwandu hwemavara anotenderwa kushandiswa mu "\N{...}" hwawedzerwa
    • Yakawedzera kugona kushandisa zvinosiyana zvakaziviswa se "static constexpr" mumabasa akaziviswa se constexpr.
  • Izvo zvinotsanangurwa mune ramangwana C-standard C2x zvaitwa:
    • Kudzima yambiro ye "-Wunused-label", iyo "[[pamwe_unused]]" hunhu hunotenderwa kuiswa kune mavara.
    • Inotenderwa kuisa mavara chero kupi zvako mukati memashoko akasanganiswa,
    • Yakawedzera typeof uye typeof_unqual operators,
    • Rudzi rutsva nullptr_t uye nullptr yenguva dzose kutsanangura null anongedza anogona kushandura kune chero anonongedzera mhando uye anomiririra mutsauko weNULL isingasungirwe kune yakazara uye isina * marudzi.
    • MuC2x modhi, kudaidza va_start macro nenhamba yakasiyana yenharo (variadic) inobvumidzwa.
  • MuC99, C11, uye C17 modhi yekutevedzera, iyo default sarudzo "-Wimplicit-function-declaration" uye "-Wimplicit-int" ikozvino inoburitsa chikanganiso pane yambiro.
  • Kushandisa zvisina kunanga kwe "void *" (e.g. "void func(void *p) {*p; }") muC++ modhi zvino gadzira kukanganisa, kwakafanana neISO C++, GCC, ICC neMSVC.
  • Kudoma bitfields semashandisirwo emirairo (semuenzaniso "__asm ​​{mov eax, s.bf }") muMicrosoft-style inline assembly blocks zvino gadzira chikanganiso.
  • Yakawedzerwa diagnostics yekuvapo kwezvimiro zvakasiyana uye mibatanidzwa ine mazita akafanana mumamodule akasiyana.
  • Iwo masimba ane hukama neOpenCL uye OpenMP rutsigiro akawedzerwa. Kuvandudzwa kwekuongorora kweC++ matemplate anoshandiswa muOpenCL kernel nharo. Yakavandudzwa queuing block rutsigiro rwe AMDGPU. Iyo nonwind hunhu inowedzerwa zvakajeka kune ese mabasa. Yakavandudzwa tsigiro yeakavakirwa-mukati mabasa.
  • Yakawedzera kugona kushandisa CLANG_CRASH_DIAGNOSTICS_DIR nharaunda kusiyanisa kutsanangura dhairekitori inochengeterwa data rekuparara.
  • Unicode tsigiro yakagadziridzwa kune iyo Unicode 15.0 yakatarwa. Zvimwe zviratidzo zvesvomhu zvinotenderwa muzviziviso, sekuti "β‚Š" (semuenzaniso "double xβ‚–β‚Šβ‚").
  • Yakawedzera tsigiro yekurodha akawanda ekugadzirisa mafaera (mafaera ekugadzirisa anotanga kutakurwa, uyezve ayo anotsanangurwa kuburikidza ne "--config=" mureza, izvo zvino zvinogona kutaurwa kakawanda). Yakachinja iyo yakasarudzika yekurodha odha yemafaira ekugadzirisa: clang anoedza kurodha faira kutanga - .cfg, uye kana isina kuwanikwa inoedza kurodha mafaera maviri .cfg uye .cfg. Kudzima kurodha mafaera ekugadzirisa nekukasira, mureza we "-no-default-config" wawedzerwa.
  • Kuti uve nechokwadi chekuvaka zvinodzokororwa, zvinokwanisika kutsiva zuva razvino uye kukosha kwenguva mu__DATE__, __TIME__ uye __TIMESTAMP__ macros nenguva yakatsanangurwa muSOURCE_DATE_EPOCH nharaunda inosiyana.
  • Kuti utarise kuvepo kweakavakirwa-mukati mabasa (builtin) anogona kushandiswa mumamiriro ekusagadzikana, iyo macro "__has_constexpr_builtin" yakawedzerwa.
  • Yakawedzera mureza mutsva wekubatanidza "-fcoro-aligned-allocation" yealigned coroutine frame allocation.
  • Iyo "-fstrict-flex-arrays =" mureza inoshandisa tsigiro yedanho rechitatu rekusimbisa zvinhu zvinochinjika muzvikamu muzvimiro (Flexible Array Members, nhevedzano yehukuru husingagumi pamagumo echimiro). Padanho rechitatu, saizi "[]" chete (semuenzaniso, "int b[]") inobatwa seyakachinjika, asi saizi "[0]" (semuenzaniso, "int b[0]") kwete.
  • Yakawedzerwa "-fmodule-output" mureza kuti igone kuunganidza-chikamu chimwe chete chemhando yeC++ modules.
  • Yakawedzerwa "-Rpass-analysis=stack-frame-layout" maitiro ekubatsira kuongorora matambudziko ane stack frame frame.
  • Yakawedzera hunhu hutsva __attribute__((target_version("cpu_features"))) uye yakawedzera mashandiro ehunhu __attribute__((target_clones("cpu_features1","cpu_features2",...))) kuti usarudze akati wandei ezvimiro zvakapihwa neArch64. CPUs.
  • Diagnostic zvishandiso zvakawedzerwa:
    • Yakawedzera yambiro "-Wsingle-bit-bitfield-constant-conversion" kuti uone kudzika-tsika kana uchigovera imwe kune imwe-bit yakasainwa bitfield.
    • Iyo diagnostics yeuninitialized constexpr variables yakawedzerwa.
    • Yakawedzera "-Wcast-function-type-strict" uye "-Wincompatible-function-pointer-types-strict" yambiro kuti uone matambudziko angangove nekukandwa kwemhando yebasa.
    • Yakawedzerwa diagnostics yekushandisa isiriyo kana yakachengetwa mamodule mazita mumabhuroko ekunze.
    • Kuonekwa kwakavandudzwa kwekushaikwa kwe "auto" keywords mune tsananguro.
    • Kuitwa kweyambiro ye "-Winteger-overflow" kwakawedzera macheki emamwe mamiriro anotungamira mukufashukira.
  • Yakaitwa tsigiro yeLoongArch yekuraira set architecture (-march=loongarch64 kana -march=la464), inoshandiswa muLoongson 3 5000 processors uye kuita iyo RISC ISA itsva, yakafanana neMIPS neRISC-V.

Makiyi ekuvandudza muLLVM 16.0:

  • LLVM kodhi inotenderwa kushandisa zvinhu zvinotsanangurwa muC ++ 17 chiyero.
  • Izvo zvinodiwa nharaunda yekuvaka LLVM zvakawedzerwa. Zvishandiso zvekuvaka zvino zvinofanirwa kutsigira C ++ 17 standard, i.e. Kuti uvake, unoda inokwana GCC 7.1, Clang 5.0, Apple Clang 10.0 kana Visual Studio 2019 16.7.
  • Iyo yekumashure yeiyo AArch64 architecture inowedzera rutsigiro rweCortex-A715, Cortex-X3 uye Neoverse V2 CPUs, assembler yeRME MEC (Memory Encryption Contexts), Armv8.3 ekuwedzera (Complex Number) uye Function Multi Versioning.
  • Mumashure ekuvakwa kweARM, tsigiro yeArmv2, Armv2A, Armv3 uye Armv3M mapuratifomu akaregwa akamiswa, ayo chizvarwa chekodhi chaiyo chisina kuvimbiswa. Yakawedzera kugona kugadzira kodhi yemirairo yekushanda nenhamba dzakaoma.
  • Iyo yekuseri kweiyo X86 yekuvakisa yakawedzera rutsigiro rwemirairo set architectures (ISAs) AMX-FP16, CMPCCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT. Yakawedzera tsigiro ye RDMSRLIST, RMSRLIST uye WRMSRNS mirairo. Sarudzo dzakaitwa "-mcpu = raptorlake", "-mcpu = meteorlake", "-mcpu = emeraldrapids", "-mcpu = sierraforest", "-mcpu = graniterapids" uye "-mcpu = grandridge".
  • Yakawedzera rutsigiro rwepamutemo yeLoongArch chikuva.
  • Yakavandudzwa kumashure kweMIPS, PowerPC uye RISC-V zvivakwa
  • Yakawedzerwa rutsigiro rwekugadzirisa 64-bit executables yeLoongArch architecture kune iyo LLDB debugger. Kuvandudzwa kwekubata kweCOFF debug zviratidzo. Yakapihwa kusefa kweduplicate DLL mune rondedzero yeakarodha Windows module.
  • Muraibhurari yeLibc ++, basa guru rakanga rakanangana nekushandisa rutsigiro rwezvinhu zvitsva zveC++20 uye C++23 zviyero.
  • Iyo LDD linker inoderedza zvakanyanya yekubatanidza nguva nekufananidza kero yekutamisa scanning uye chikamu chekutanga mashandiro. Yakawedzerwa rutsigiro rwekudzvanya kwechikamu uchishandisa iyo ZSTD algorithm.

Source: opennet.ru

Voeg