GCC 11.1 už bol vydaný, toto sú jeho najdôležitejšie novinky a zmeny

Po roku vývoja Bola vydaná nová verzia kompilátora GCC 11.1, prvé významné vydanie v novej pobočke GCC 11.x. V rámci novej schémy číslovania verzií sa počas vývoja používala verzia 11.0 a krátko pred vydaním GCC 11.1 už bola pobočka GCC 12.0 rozdvojená, aby vytvorila ďalšiu hlavnú verziu GCC 12.1.

GCC 11.1 vyniká prechodom na predvolený formát ladiaceho súboru DWARF 5, predvolené zahrnutie štandardu C ++ 17 ("-std = gnu ++ 17"), významné vylepšenia kompatibility so štandardom C ++ 20, experimentálna podpora pre C ++ 23, vylepšenia týkajúce sa budúceho štandardu jazyk C (C2x), nové optimalizácie výkonu.

GCC 11.1 Hlavné nové funkcie

Predvolený režim pre jazyk C ++ sa zmenil tak, aby používal štandard C ++ 17, namiesto predtým navrhovaného C ++ 14. Je možné selektívne zakázať nové správanie C ++ 17 pri spracovaní šablón, ktoré ako parameter používajú iné šablóny (-fno-new-ttp-matching).

Pridaná podpora pre hardvérovú akceleráciu nástroja AddressSanitizer, ktorý umožňuje zistiť fakty o prístupe k oblastiam uvoľnenej pamäte, prekročení limitov pridelenej vyrovnávacej pamäte a niektorých ďalších druhoch chýb pri práci s pamäťou. Hardvérová akcelerácia je v súčasnosti k dispozícii iba pre architektúru AArch64 a zameriava sa na jej použitie pri kompilácii jadra Linuxu.

Ďalšou novinkou, ktorá sa predstavuje, je optimalizácie a vylepšenia medzi postupmi, pretože bol pridaný nový preukaz IPA-modref (-fipa-modref) na sledovanie vedľajších účinkov pri volaní funkcií a na zlepšenie presnosti analýzy. Okrem toho tiež a vylepšená implementácia preukazu IPA-ICF (-fipa-icf), čo znižuje spotrebu pamäte kompilácie a zvyšuje počet zjednotených funkcií, pre ktoré sa zlučujú identické bloky kódu.

El profilovo optimalizovaný motor (PGO), vylepšený režim „-fprofile-values“ sledovaním ďalších parametrov pre nepriame volania.

tiež Je zdôraznená pokračujúca implementácia štandardu OpenMP 5.0 (Open Multi-Processing), v ktorom pridaná počiatočná podpora pre smernicu o priradení a možnosť používať nejednotné slučky v zostavách OpenMP. Premenná prostredia OMP_TARGET_OFFLOAD je teraz podporovaná.

Vylepšila sa implementácia špecifikácie paralelného programovania OpenACC 2.6 poskytovanej pre jazyky C, C ++ a Fortran, ktorá definuje nástroje na odľahčenie operácií od GPU a špecializovaných procesorov, ako je NVIDIA PTX.

Pre jazyky rodiny C bol implementovaný nový atribút „no_stack_protector“, určené na označenie funkcií, pre ktoré by nemala byť povolená ochrana zásobníka ("-fstack-protector"). Atribút "malloc" bol rozšírený o podporu identifikácie párov hovorov na pridelenie a uvoľnenie pamäte, ktorý sa v statickom analyzátore používa na zisťovanie typických chýb pamäte (úniky pamäte, využitie po bezplatnom použití, dvojité volanie bezplatnej funkcie atď.) a varovania kompilátora „-Wmismatched-dealloc“, „-Wmismatched- new-delete“ a „ -Wfree-nonheap-object „hlásenie nekonzistentného pridelenia a operácií pridelenia.

Pri generovaní ladiacich informácií sa štandardne používa formát DWARF 5, ktorý v porovnaní s predchádzajúcimi verziami umožňuje generovanie ladiacich údajov, ktoré je o 25% kompaktnejšie. Plná podpora DWARF 5 vyžaduje binutils minimálne verzie 2.35.2.

Vylepšené možnosti režimu ThreadSanitizer (-fsanitize = vlákno), pretože ánoe pridáva podporu pre alternatívne runtime a prostredia, ako aj podpora pre ladiaci nástroj KCSAN (Kernel Concurrency Sanitizer) na dynamické zisťovanie podmienok závodu v jadre Linuxu. Boli pridané nové možnosti „–param tsan-rozlišovať-volatilné“ a „–param tsan-instrument-func-vstup-výstup“.

Vektorizér poskytuje zaúčtovanie celého obsahu funkcie a ďalšie spracovanie funkcií spojených s križovatkami a odkazmi na predchádzajúce bloky v riadiacom vývojovom diagrame (CFG).

Optimalizátor má schopnosť prevádzať rad podmienených operácií na výraz zmeny, v ktorom sa porovnáva rovnaká premenná. V budúcnosti bude možné výraz zmeny zakódovať pomocou pokynov na testovanie bitov (na kontrolu tejto konverzie bola pridaná možnosť „-fbit-tests“).

Pre C ++ bola implementovaná časť zmien a inovácií navrhovaných v štandarde C ++ 20, vrátane virtuálnych funkcií „consteval virtual“, pseudoničičov na ukončenie životného cyklu objektov, použitia triedy enum a výpočtu veľkosť poľa vo výraze „nový“.

Ak o tom chcete vedieť viac, môžete skontrolovať podrobnosti v nasledujúci odkaz. 


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.