Famoahana ny suite compiler LLVM 13.0

Taorian'ny enim-bolana ny fampandrosoana dia atolotra ny famoahana ny tetikasa LLVM 13.0 - fitaovana mifanaraka amin'ny GCC (mpamorona, optimizer ary mpamorona kaody) izay manangona programa ho bitcode manelanelana amin'ny torolΓ lana virtoaly mitovy amin'ny RISC (milina virtoaly ambany misy rafitra fanamafisam-peo maromaro). Ny pseudo-code vokarina dia azo ovain'ny JIT compiler ho toromarika milina amin'ny fotoana hanatanterahana ny programa.

Fanatsarana ao amin'ny Clang 13.0:

  • Fanohanana natao ho an'ny antso an-tariby azo antoka (miantso subroutine amin'ny faran'ny asa iray, mamorona fiverenana amin'ny rambony raha miantso ny tenany ny subroutine). Ny fanohanana ny antso an-tariby azo antoka dia omen'ny toetra "[[clang::musttail]]" ao amin'ny C++ sy "__attribute__((musttail))" ao amin'ny C, ampiasaina amin'ny fanambarana "miverina". Ny endri-javatra dia mamela anao hampihatra optimizations amin'ny alalan'ny fametrahana ny kaody ho fisaka iteration mba hamonjy ny stack fanjifana.
  • Ny fanambarana "mampiasa" sy ny fanitarana clang dia manome fanohanana amin'ny famaritana ny toetran'ny C++11 amin'ny alΓ lan'ny endrika "[[]]".
  • Nampiana ny saina "-Wreserved-identifier" mba hanehoana fampitandremana rehefa mamaritra ireo famantarana voatokana ao amin'ny kaody mpampiasa.
  • Nampiana saina "-Wunused-but-set-parameter" sy "-Wunused-but-set-variable" hanehoana fampitandremana raha toa ka misy paramΓ¨tre na fari-pitsipika napetraka fa tsy ampiasaina.
  • Nampiana saina "-Wnull-pointer-subtraction" mba hamoahana fampitandremana raha toa ka mety hampiditra fihetsika tsy voafaritra ny kaody noho ny fampiasana tondro tsy misy dikany amin'ny asa fanalana.
  • Nampiana ny saina "-fstack-usage" mba hamoronana rakitra ".su" fanampiny ho an'ny fisie kaody tsirairay misy fampahalalana momba ny haben'ny sarin'ny stack ho an'ny fiasa tsirairay voafaritra ao amin'ny rakitra karakaraina.
  • Misy karazana famoahana vaovao nampiana ny mpanadihady static - "sarif-html", izay mitarika amin'ny famoronana tatitra miaraka amin'ny endrika HTML sy Sarif. Nanampy fanamarinana allocClassWithName vaovao. Rehefa mamaritra ny safidy "-analyzer-display-progress" dia aseho ny fotoana famakafakana ny asa tsirairay. Efa saika vonona ny mpandinika tondro marani-tsaina (alpha.cplusplus.SmartPtr).
  • Nitarina ny fahaiza-manao mifandraika amin'ny fanohanan'ny OpenCL. Fanampiana fanampiny ho an'ny fanitarana vaovao cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields ary __cl_clang_non_portable_kernel_param_types. Nitohy ny fampiharana ny fanondroana OpenCL 3.0. Ho an'ny C, ny fanondroana OpenCL 1.2 dia ampiasaina amin'ny alΓ lan'ny default raha tsy misy dikan-teny hafa voafantina mazava. Ho an'ny C ++, dia nampiana ny fanohanana ny rakitra misy ny fanitarana ".clcpp".
  • Fanohanana ny toromarika fanovana tadivavarana (β€œ#pragma omp unrol” sy β€œ#pragma omp tile”) voafaritra ao amin'ny fanondroana OpenMP 5.1 dia nampiharina.
  • Safidy fanampiny ho an'ny fampitaovana clang-format: SpacesInLineCommentPrefix hamaritana ny isan'ny habaka alohan'ny fanehoan-kevitra, IndentAccessModifiers, LambdaBodyIndentation ary PPIndentWidth mba hifehezana ny fampifanarahana ny fidirana, ny fomba fiteny lambda ary ny torolΓ lana mialoha. Nitarina ny fahafaha-mandamina ny fanisana ny rakitra lohapejy (SortIncludes). Fanampiana fanampiny amin'ny fandrafetana rakitra JSON.
  • Ny ampahany betsaka amin'ny seky vaovao dia nampidirina ho an'ny linter clang-tidy.

Fanavaozana lehibe ao amin'ny LLVM 13.0:

  • Nampiana ny safidy "-ehcontguard" hampiasa ny teknolojia CET (Windows Control-flow Enforcement Technology) mba hiarovana amin'ny fanatanterahana ny fanararaotana natsangana tamin'ny teknika Return-Oriented Programming (ROP) amin'ny dingana fitantanana manokana.
  • Ny tetikasa debuginfo-test dia novana anarana hoe cross-project-test ary natao hizaha toetra ireo singa avy amin'ny tetikasa samihafa, fa tsy voafetra amin'ny fampahalalam-baovao debug.
  • Ny rafitra fivoriambe dia manome fanohanana amin'ny fananganana fizarana maromaro, ohatra, ny iray misy fitaovana, ary ny iray misy tranomboky ho an'ny mpamorona.
  • Ao amin'ny backend ho an'ny maritrano AArch64, ny fanohanana ny Armv9-A RME (Realm Management Extension) sy ny SME (Scalable Matrix Extension) dia ampiharina amin'ny assembler.
  • Ny fanohanana ny ISA V68/HVX dia nampiana tao amin'ny backend ho an'ny maritrano Hexagon.
  • Ny backend x86 dia nanatsara ny fanohanana ireo processeur AMD Zen 3.
  • Fanampiana fanampiny ho an'ny GFX1013 RDNA2 APU amin'ny backend AMDGPU.
  • Libc++ dia manohy mampihatra ireo endri-javatra vaovao amin'ny fenitra C++20 sy C++2b, ao anatin'izany ny famitana ny tranomboky "concepts". Fanampiana fanampiny ho an'ny std :: filesystem ho an'ny sehatra Windows miorina amin'ny MinGW. Misaraka ny rakitra lohapejy , SY . Nampiana safidy fananganana LIBCXX_ENABLE_INCOMPLETE_FEATURES mba hanesorana ny fisie lohapejy tsy misy fiasa feno.
  • Nitarina ny fahafahan'ny mpampitohy LLD, izay nampiharina ny fanohanana ireo processeur Big-endian Aarch64, ary ny backend Mach-O dia nentina tany amin'ny fanjakana izay mamela ny fampifandraisana ireo programa mahazatra. Anisan'izany ny fanatsarana ilaina hampifandraisana ny Glibc amin'ny fampiasana LLD.
  • Ny fampiasa llvm-mca (Machine Code Analyzer) dia nanampy fanohanana ireo processeur izay manatanteraka toromarika araka ny filaharany (in-order superscalar pipeline), toy ny ARM Cortex-A55.
  • Ny debugger LLDB ho an'ny sehatra AArch64 dia manome fanohanana feno ho an'ny Pointer Authentication, MTE (MemTag, Memory Tagging Extension) ary ny rejisitra SVE. Fanampiana baiko izay ahafahanao mamehy marika amin'ny hetsika famatsiana fahatsiarovana tsirairay ary mandamina fisavana ny tondro rehefa miditra amin'ny fitadidiana, izay tsy maintsy ampifandraisina amin'ny marika marina.
  • Ny debugger LLDB sy ny frontend ho an'ny fiteny Fortran - Flang dia nampidirina tao amin'ny fivoriambe binary novokarin'ny tetikasa.

Source: opennet.ru

Add a comment