Kuburitswa kweLLVM 15.0 compiler suite

Mushure memwedzi mitanhatu yebudiriro, kuburitswa kwechirongwa cheLLVM 15.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 15.0:

  • Kune masisitimu anoenderana neiyo x86 architecture, iyo "-fzero-call-yakashandiswa-regs" mureza wawedzerwa, izvo zvinova nechokwadi chekuti marejista ese eCPU anoshandiswa mubasa anoiswazve zero asati adzosa kutonga kubva pabasa. Iyi sarudzo inobvumidza iwe kudzivirira kubva kune ruzivo rwekuburitswa kubva kumabasa uye kuderedza huwandu hwezvivharo zvakakodzera kuvaka ROP (Return-Oriented Programming) gadget mukushandisa neanenge 20%.
  • Randomization yekuiswa kwendangariro yezvimiro zveC kodhi yakaitwa, izvo zvinokanganisa kutorwa kwedata kubva kune zvimiro kana chiitiko chekushandiswa kwekusagadzikana. Randomization inobatidzwa nekudzimwa uchishandisa randomize_layout uye no_randomize_layout attributes, uye inoda kuseta mbeu uchishandisa "-frandomize-layout-seed" kana "-frandomize-layout-seed-file" mureza.
  • Yakawedzerwa "-fstrict-flex-arrays=" mureza ", iyo iwe yaunokwanisa kudzora nayo miganhu yeiyo inochinjika array element muzvimiro (Flexible Array Members, hurongwa hwehukuru husingaverengeki kumagumo kwechimiro). Kana yaiswa ku 0 (default), chinhu chekupedzisira chechimiro chine array chinogara chichigadziriswa seanochinjika array, 1 - saizi chete [], [0] uye [1] inogadziriswa seyakagadziriswa array, 2 - saizi chete. [] uye [0] zvinogadziriswa senge dhizaini inochinjika.
  • Yakawedzera tsigiro yekuedza yeC-semutauro HLSL (High-Level Shader Mutauro), inoshandiswa muDirectX kunyora shaders.
  • Yakawedzerwa "-Warray-parameter" kunyevera pamusoro pemabasa ekupfuura ane nharo dzisingaenderane zviziviso zvine chekuita neakagadziriswa- uye akasiyana-arefu arrays.
  • Yakavandudzwa kuenderana neMSVC. Yakawedzerwa rutsigiro rwe "#pragma basa" (inoraira mugadziri kuti agadzire runhare rwekuita panzvimbo yekuwedzera inline) uye "#pragma alloc_text" (inotsanangura zita rechikamu nekodhi yebasa) yakapihwa muMSVC. Yakawedzerwa rutsigiro rweMSVC-inoenderana / JMC uye / JMC mireza.
  • Basa rinoramba richitsigira remangwana C2X uye C++23 zviyero. Pamutauro weC, zvinotevera zvinoiswa: hunhu hwe noreturn, mazwi akakosha enhema uye echokwadi, mhando ye _BitInt(N) yezvikamu zvehudzamu hwakapihwa, *_WIDTH macros, chivakamberi cheu8 cheUTF-8 mabhii akavharidzirwa.

    Kune C++, zvinotevera zvinotevedzwa: kubatanidza module, ABI kuparadzaniswa kwenhengo dzebasa, yakaraira zvine simba kutanga kwezvisiri zvenzvimbo zvinosiyana mumamodules, multidimensional index operators, auto(x), non-literal variables, goto uye mavara mumabasa akaziviswa se constexpr. , kutevedzana kwakaganhurirwa kwokupukunyuka, mazita emavara anotiza.

  • Iwo masimba ane hukama neOpenCL uye OpenMP rutsigiro akawedzerwa. Yakawedzerwa rutsigiro rweOpenCL yekuwedzera cl_khr_subgroup_rotate.
  • Kune iyo x86 dhizaini, dziviriro yakawedzerwa kubva pakusagadzikana muma processors anokonzerwa nekufungidzira kuurayiwa kwemirairo mushure mekusaverengeka kumberi kusvetuka mashandiro. Dambudziko rinoitika nekuda kwepre-emptive kugadzirisa kwemirairo nekukasira kuteedzera kuraira kwebazi mundangariro (SLS, Straight Line Speculation). Kugonesa dziviriro, sarudzo "-mharden-sls=[hapana|all|return|indirect-jmp]" inokurudzirwa.
  • Kune mapuratifomu anotsigira SSE2 yekuwedzera, iyo _Float16 mhando yakawedzerwa, iyo inoteedzerwa uchishandisa iyo inoyangarara mhando mune yekushaikwa kwerutsigiro kune AVX512-FP16 mirairo.
  • Yakawedzerwa "-m[no-]rdpru" mureza kudzora kushandiswa kweiyo RDPRU rairo, inotsigirwa kutanga ne AMD Zen2 processors.
  • Yakawedzera "-mfunction-return=thunk-extern" mureza kudzivirira kubva kune RETBLEED vulnerability, iyo inoshanda nekuwedzera nhevedzano yemirairo isingabatanidzi kubatanidzwa kwekufungidzira kwekuuraya mashandiro emapazi asina kunanga.

Makiyi ekuvandudza muLLVM 15.0:

  • Yakawedzerwa rutsigiro rweCortex-M85 CPU, Armv9-A, Armv9.1-A uye Armv9.2-A architectures, Armv8.1-M PACBTI-M ekuwedzera.
  • Yekuyedza backend yeDirectX yakawedzerwa inotsigira iyo DXIL (DirectX Intermediate Mutauro) fomati inoshandiswa kune DirectX shaders. Iyo yekumashure inogoneswa nekutsanangura iyo "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX" parameter panguva yegungano.
  • Libc ++ inoenderera mberi nekushandisa zvinyowani zveC ++ 20 uye C++ 2b zviyero, kusanganisira kupedzwa kwekuita kweraibhurari ye "fomati" uye yakatsanangurwa yekuedza vhezheni ye "range" raibhurari.
  • Yakavandudzwa kumashure kwex86, PowerPC uye RISC-V zvivakwa.
  • Iko kugona kweLLD linker uye iyo LLDB debugger yakakwidziridzwa.

Source: opennet.ru

Voeg