LLVM 13.0 komt met ondersteuningsverbeteringen en meer

LLVM

Na zes maanden ontwikkeling de lancering van de nieuwe versie van het project «LLVM 13.0» is zojuist gepresenteerd GCC-compliant (Compilers, Optimizers en Code Generators) die programma's compileert in tussenliggende bitcode van virtuele instructies vergelijkbaar met RISC (een virtuele machine op laag niveau met een optimalisatiesysteem op meerdere niveaus).

In deze nieuwe versie zijn diverse wijzigingen en nieuwigheden toegevoegd, waaronder: ondersteuningsverbeteringen gemarkeerd evenals de implementatie van de nieuwe functies van onder andere C ++ 20 en C ++ 2b.

Belangrijke nieuwe kenmerken van LLVM 13.0

In deze nieuwe versie kunnen we vinden dat sen de optie "-ehcontguard" toegevoegd om CET-technologie te gebruiken (Windows Control-flow Enforcement Technology) ter bescherming in de fase van het afhandelen van uitzonderingen van de uitvoering van exploits die zijn gebouwd met behulp van Return-Oriented Programming (ROP)-technieken.

Trouwens, enHet debuginfo-test-project is hernoemd naar cross-project-tests en het is ontworpen om componenten van meerdere projecten te testen, niet beperkt tot het debuggen van informatie, en het buildsysteem biedt ondersteuning voor het bouwen van meerdere distributies, bijvoorbeeld één met hulpprogramma's en de andere met ontwikkelaarsbibliotheken.

Bovendien Libc ++ blijft nieuwe functies van de C ++ 20- en C ++ 2b-standaarden implementeren, inclusief voltooiing van de bibliotheek 'concepten', plus ondersteuning toegevoegd voor std: bestandssysteem voor Windows op basis van MinGW, ook aparte header-bestanden , en en de LIBCXX_ENABLE_INCOMPLETE_FEATURES build-optie is toegevoegd om header-bestanden met onvolledig geïmplementeerde functionaliteit uit te schakelen.

Terwijl backend voor AArch64-architectuur ondersteunt Armv9-A RME-extensies (Realm Management Extension) en SME (Scalable Matrix Extension) in assembler, ISA V68 / HVX-ondersteuning toegevoegd naar de Hexagon-architectuur-backend en de x86-backend verbeterde compatibiliteit met AMD Zen 3-processors en ondersteuning toegevoegd voor GFX1013 RDNA2 APU's aan de AMDGPU-backend.

De mogelijkheden van de LLD-linker, die ondersteuning voor Big-endian Aarch64-processors implementeert, zijn ook uitgebreid en de Mach-O-backend is in een staat gebracht waarin gewone programma's kunnen worden gekoppeld. Het bevat de nodige verbeteringen om Glibc te koppelen met behulp van LLD.

Het hulpprogramma llvm-mca (Machine Code Analyzer) voegt ondersteuning toe voor in-order superscalaire pijpprocessors, zoals ARM Cortex-A55.

De LLDB-debugger voor het AArch64-platform biedt volledige ondersteuning voor pointer-authenticatie, MTE (MemTag, Memory Tagging Extension) en SVE-registers, plus commando's zijn toegevoegd waarmee u tags aan elke geheugentoewijzingsbewerking kunt binden en bij het openen van geheugen de juiste aanwijzer kunt controleren die aan de tag moet worden gekoppeld.
De LLDB-foutopsporing en de Fortran - Flang-interface zijn toegevoegd aan de binaire assemblages die door het project zijn gegenereerd.

De Clang 13.0 benadrukt verbeteringen:

  • Ondersteuning voor gegarandeerde wachtrijaanroepen (een subroutine-aanroep aan het einde van een functie, die een staartrecursie vormt als de subroutine zelf aanroept) is geïmplementeerd.
  • De vlaggen "-Wunused-but-set-parameter" en "-Wunused-but-set-variable" toegevoegd om een ​​waarschuwing weer te geven als een parameter of variabele is ingesteld maar niet wordt gebruikt.
  • De vlag "-Wnull-pointer-subtraction" toegevoegd om een ​​waarschuwing weer te geven als de code kan leiden tot ongedefinieerd gedrag vanwege het gebruik van een null-pointer bij aftrekbewerkingen.
  • De vlag "-fstack-use" toegevoegd om voor elk codebestand een extra ".su"-bestand te genereren met informatie over de grootte van de stapelframes voor elke functie die in het verwerkte bestand is gedefinieerd.
  • Er is een nieuw type uitvoer toegevoegd aan de statische parser, "sarif-html", wat resulteert in het gelijktijdig genereren van rapporten in HTML- en Sarif-indeling.
  • Een nieuwe controle toegevoegd voor allocClassWithName. Wanneer de optie "-analyzer-display-progress" is opgegeven, wordt de ontledingstijd voor elke functie weergegeven. De slimme pointer-parser (alpha.cplusplus.SmartPtr) is bijna klaar.
  • Er is ondersteuning geïmplementeerd voor de lustransformatierichtlijnen ("#pragma omp unrol" en "#pragma omp tile"), gedefinieerd in de OpenMP 5.1-specificatie.
  • Een groot deel van de nieuwe cheques is toegevoegd aan linter clang-tidy.

Eindelijk Als u er meer over wilt weten, u kunt de details controleren In de volgende link.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: AB Internet Networks 2008 SL
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.