GCC 11.1 wurde bereits veröffentlicht. Dies sind die wichtigsten Neuigkeiten und Änderungen

Nach einem Jahr der Entwicklung, GCC 11.1 Compiler Suite neue Version veröffentlicht, die erste bedeutende Version in der neuen GCC 11.x-Niederlassung. Unter dem neuen Versionsnummerierungsschema wurde Version 11.0 während der Entwicklung verwendet, und kurz vor der Veröffentlichung von GCC 11.1 wurde bereits ein Zweig von GCC 12.0 gegabelt, um die nächste Hauptversion von GCC 12.1 zu bilden.

GCC 11.1 zeichnet sich durch den Übergang zum Standard-Debug-Dateiformat DWARF 5 aus, die Standardeinbeziehung des C ++ 17-Standards ("-std = gnu ++ 17"), signifikante Verbesserungen der Kompatibilität mit dem C ++ 20-Standard, experimentelle Unterstützung für C ++ 23, Verbesserungen in Bezug auf den zukünftigen Standard von die C-Sprache (C2x), neue Leistungsoptimierungen.

GCC 11.1 Neue Hauptfunktionen

Der Standardmodus für die C ++ - Sprache wird geändert, um den C ++ 17-Standard zu verwendenanstelle des zuvor vorgeschlagenen C ++ 14. Es ist möglich, das neue C ++ 17-Verhalten selektiv zu deaktivieren, wenn Vorlagen verarbeitet werden, die andere Vorlagen als Parameter verwenden (-fno-new-ttp-Matching).

Unterstützung für Hardwarebeschleunigung hinzugefügt des AddressSanitizer-Tools, mit dem Sie die Fakten für den Zugriff auf freigegebene Speicherbereiche, das Überschreiten der Grenzen des zugewiesenen Puffers und einige andere Arten von Fehlern bei der Arbeit mit dem Speicher ermitteln können. Derzeit ist die Hardwarebeschleunigung nur für die AArch64-Architektur verfügbar und konzentriert sich auf deren Verwendung beim Kompilieren des Linux-Kernels.

Eine weitere Neuheit, die vorgestellt wird, sind die Optimierungen und Verbesserungen zwischen den Prozeduren, da ein neuer IPA-Modref-Pass hinzugefügt wurde (-fipa-modref) zur Verfolgung von Nebenwirkungen bei Funktionsaufrufen und zur Verbesserung der Analysegenauigkeit. Daneben auch a verbesserte Implementierung des IPA-ICF-Passes (-fipa-icf), wodurch der Verbrauch des Kompilierungsspeichers reduziert und die Anzahl der einheitlichen Funktionen erhöht wird, für die identische Codeblöcke zusammengeführt werden.

El profilgesteuerte Optimierungs-Engine (PGO), verbesserter "-fprofile-values" -Modus indem Sie mehr Parameter für indirekte Anrufe verfolgen.

auch Die fortgesetzte Implementierung des OpenMP 5.0-Standards wird hervorgehoben (Open Multi-Processing), in dem Erste Unterstützung für die Zuweisungsrichtlinie und die Möglichkeit, ungleichmäßige Schleifen zu verwenden, wurden hinzugefügt in OpenMP-Builds. Die Umgebungsvariable OMP_TARGET_OFFLOAD wird jetzt unterstützt.

Die Implementierung der OpenACC 2.6-Spezifikation für die parallele Programmierung für die Sprachen C, C ++ und Fortran, die Tools zum Auslagern von Vorgängen auf GPUs und spezialisierte Prozessoren wie NVIDIA PTX definiert, wurde verbessert.

Für die Sprachen der C-Familie wurde ein neues Attribut "no_stack_protector" implementiert. Entwickelt, um Funktionen zu markieren, für die der Stapelschutz nicht aktiviert werden soll ("-fstack-protector"). Das Attribut "malloc" wurde um die Unterstützung der Identifizierung von Anrufpaaren erweitert, um Speicher zuzuweisen und freizugeben, der im statischen Parser verwendet wird, um typische Speicherfehler (Speicherlecks, Verwendung nach freiem Zugriff, doppelte Aufrufe der freien Funktion usw.) und Compiler-Warnungen "-Wmismatched-dealloc", "-Wmismatched-new-delete" und " - Free-Nonheap-Object ", das inkonsistente Freigabe- und Freigabevorgänge meldet.

Beim Generieren von Debugging-Informationen wird standardmäßig das DWARF 5-Format verwendet, das im Vergleich zu früheren Versionen die Generierung von Debugging-Daten ermöglicht, die 25% kompakter sind. Für die vollständige Unterstützung von DWARF 5 sind Binutils mindestens Version 2.35.2 erforderlich.

Erweiterte Funktionen im ThreadSanitizer-Modus (-fsanitize = thread), da jae bietet Unterstützung für alternative Laufzeiten und Umgebungen. sowie Unterstützung für das Kernel Concurrency Sanitizer (KCSAN) -Debugging-Tool zur dynamischen Erkennung von Race-Bedingungen im Linux-Kernel. Neue Optionen "–param tsan-define-volatile" und "–param tsan-instrument-func-entry-exit" wurden hinzugefügt.

Der Vektorisierer bietet die Abrechnung des gesamten Funktionsinhalts und die zusätzliche Verarbeitung der Funktionen, die den Schnittpunkten und Verweisen auf vorherige Blöcke im Kontrollflussdiagramm (CFG) zugeordnet sind.

Der Optimierer kann eine Reihe von bedingten Operationen in einen Änderungsausdruck konvertieren, in dem dieselbe Variable verglichen wird. In Zukunft kann der Änderungsausdruck mithilfe von Bit-Testanweisungen codiert werden (um diese Konvertierung zu steuern, wurde die Option "-fbit-tests" hinzugefügt).

Für C ++ wurde ein Teil der im C ++ 20-Standard vorgeschlagenen Änderungen und Innovationen implementiert, einschließlich der virtuellen Funktionen "consteval virtual", Pseudo-Zerstörer zum Beenden des Lebenszyklus von Objekten, Verwenden der Enum-Klasse und Berechnen die Größe eines Arrays im Ausdruck "neu".

Wenn Sie mehr darüber wissen wollenkönnen Sie die Details einchecken den folgenden Link. 


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.