Kuburitswa kweLLVM 13.0 compiler suite

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

Kuvandudzwa muClang 13.0:

  • Yakaitwa tsigiro yeakavimbiswa muswe mafoni (kudaidza subroutine kumagumo ebasa, kugadzira muswe kudzokororwa kana subroutine ichizvidaidza). Tsigiro yenhare dzemuswe dzakavimbiswa inopihwa ne "[[clang::musttail]]" hunhu muC++ uye "__attribute__((musttail))" muC, inoshandiswa muchirevo che"kudzoka". Iyo ficha inobvumidza iwe kuita optimizations nekuisa kodhi mune yakatsetseka iteration kuchengetedza stack kushandiswa.
  • "kushandisa" zviziviso uye clang ekuwedzera inopa tsigiro yekutsanangura C++11-maitiro maitiro uchishandisa iyo "[[]]" fomati.
  • Yakawedzera mureza we "-Wreserved-identifier" kuratidza yambiro kana wataura zvakachengetwa zviziviso mukodhi yemushandisi.
  • Yakawedzerwa "-Wunused-but-set-parameter" uye "-Wunused-but-set-variable" mireza kuratidza yambiro kana parameter kana shanduko yaiswa asi isingashandisi.
  • Yakawedzerwa "-Wnull-pointer-subtraction" mureza kuti upe yambiro kana kodhi yacho ichigona kuunza maitiro asina kutsanangurwa nekuda kwekushandisa null pointer mukubvisa.
  • Wakawedzera "-fstack-usage" mureza kuti pafaira rega rega rekodhi ".su" riwedzere ruzivo rwehukuru hwemafuremu ebasa rega rega rinotsanangurwa mufaira riri kugadziriswa.
  • Rudzi rutsva rwekubuda rwakawedzerwa kune static analyzer - "sarif-html", inotungamira kuchizvarwa chemishumo panguva imwe chete muHTML neSarif mafomati. Yakawedzera itsva allocClassWithName cheki. Paunenge uchitsanangura iyo "-analyzer-kuratidza-kufambira mberi" sarudzo, nguva yekuongorora yebasa rega rega inoratidzwa. Iyo smart pointer analyzer (alpha.cplusplus.SmartPtr) yave kuda kugadzirira.
  • Iwo masimba ane chekuita neOpenCL rutsigiro akawedzerwa. Yakawedzera tsigiro yezvitsva zvekuwedzera cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields uye __cl_clang_non_portable_kernel_param_types. Kuitwa kweiyo OpenCL 3.0 yakatarwa kwaenderera mberi. KuC, iyo OpenCL 1.2 yakatarwa inoshandiswa nekusingaperi kunze kwekunge imwe shanduro yakasarudzwa zvakajeka. Nokuda kweC ++, kutsigirwa kwemafaira ane kuwedzera ".clcpp" kwakawedzerwa.
  • Tsigiro yemirairo yekushandura loop ("#pragma omp unrol" uye "#pragma omp tile") inotsanangurwa muOpenMP 5.1 yakatarwa yakaitwa.
  • Yakawedzerwa sarudzo kune clang-format utility: SpacesInLineCommentPrefix kutsanangura huwandu hwenzvimbo pamberi pekutaura, IndentAccessModifiers, LambdaBodyIndentation uye PPIndentWidth kudzora kurongeka kwezvinyorwa, lambda kutaura uye preprocessor mirairo. Mikana yekugadzirisa kuverengwa kwemafaira emusoro (SortIncludes) yakawedzerwa. Yakawedzerwa rutsigiro rwekugadzirisa mafaera eJSON.
  • Chikamu chikuru checheki chitsva chakawedzerwa kune linter clang-tidy.

Makiyi ekuvandudza muLLVM 13.0:

  • Yakawedzera iyo "-ehcontguard" sarudzo yekushandisa tekinoroji yeCET (Windows Control-flow Enforcement Technology) kudzivirira kubva mukuitwa kwezvakapambwa zvakavakwa pachishandiswa Return-Oriented Programming (ROP) hunyanzvi padanho rekubata.
  • Iyo debuginfo-test purojekiti yakapihwa zita rekuti muchinjika-purojekiti-bvunzo uye yakagadzirirwa kuyedza zvikamu kubva kumapurojekiti akasiyana, kwete kugumira pakugadzirisa ruzivo.
  • Iyo yegungano system inopa rutsigiro rwekuvaka akati wandei kugovera, semuenzaniso, imwe ine zvishandiso, uye imwe ine maraibhurari evagadziri.
  • Mumashure meiyo AArch64 architecture, tsigiro yeArmv9-A RME (Realm Management Extension) uye SME (Scalable Matrix Extension) yekuwedzera inoitwa muassembler.
  • Tsigiro yeISA V68/HVX yakawedzerwa kuseri kweiyo Hexagon architecture.
  • Iyo x86 backend yakavandudza rutsigiro rwe AMD Zen 3 processors.
  • Yakawedzerwa rutsigiro rweGFX1013 RDNA2 APU kune AMDGPU backend.
  • Libc ++ inoenderera mberi nekushandisa zvinhu zvitsva zveC++20 uye C++2b zviyero, kusanganisira kupedzwa kweraibhurari ye "pfungwa". Yakawedzerwa rutsigiro rwe std :: filesystem ye MinGW-based Windows chikuva. Mafaira emusoro akapatsanurwa , Uye . Yakawedzerwa kuvaka sarudzo LIBCXX_ENABLE_INCOMPLETE_FEATURES kudzima mafaira emusoro asina kunyatso itwa.
  • Kugona kweLLD linker kwakawedzerwa, umo kutsigirwa kweBig-endian Aarch64 processors kunoitwa, uye iyo Mach-O backend yakaunzwa kuhurumende inobvumira kubatanidza zvirongwa zvenguva dzose. Inosanganisirwa kuvandudzwa kunodiwa kubatanidza Glibc uchishandisa LLD.
  • Iyo llvm-mca (Muchina Code Analyzer) utility yakawedzera rutsigiro rwema processor anoita mirairo mukurongeka (in-order superscalar pombi), senge ARM Cortex-A55.
  • Iyo LLDB debugger yeAArch64 chikuva inopa rutsigiro rwakazara rwePointer Authentication, MTE (MemTag, Memory Tagging Extension) uye SVE marejista. Yakawedzerwa mirairo iyo inokutendera kuti usunge ma tag kune yega yega yekugovera ndangariro kushanda uye kuronga cheki cheinongedza kana uchinge uchiwana ndangariro, iyo inofanirwa kuve yakabatana neiyo tag chaiyo.
  • Iyo LLDB debugger uye yekumberi yemutauro weFortran - Flang yakawedzerwa kumabinari magungano akagadzirwa nepurojekiti.

Source: opennet.ru

Voeg