Il 3 maggio è stata rilasciata la prima versione pubblica di GCC 9.1.
Include molti miglioramenti significativi e aggiunte rispetto all'ottava
versione.
Modifiche generali
Opzioni
- I comandi che accettano dimensioni ora supportano valori a 64 bit e suffissi per indicare la dimensione;
- È stata aggiunta l'opzione -flive-patching, per gestire le ottimizzazioni potenzialmente distruttive per il cambio dinamico del codice;
- È stata aggiunta l'opzione —completion per supportare il completamento automatico nella shell;
- I messaggi di errore del compilatore ora includono i numeri di riga (-fno-diagnostics-show-line-numbers) e
informazioni sui tipi (-fno-diagnostics-show-labels); - È stata aggiunta l'opzione -fdiagnostics-format=json per l'output dei messaggi di errore in formato JSON;
- Le opzioni per specificare l'allineamento (-falign-functions, per esempio) ora possono accettare una coppia di varianti di allineamento;
- Sono state aggiunte opzioni per filtrare l'elenco dei file (-fprofile-filter-files, -fprofile-exclude-files), che vengono sottoposti a profili con il profiler;
- AddressSanitizer ora utilizza un allineamento più compatto per rilevare accessi non validi alle variabili nello stack;
- Numerosi miglioramenti nell'output -fopt-info;
- È stata aggiunta l'opzione -fsave-optimization-record per salvare il rapporto sulle ottimizzazioni in un file;
- È stata aggiunta l'opzione -fipa-stack-alignment e -fipa-reference-addressable.
Nuove funzioni integrate
Nuovo attributo
- copy.
Altro
Numerosi miglioramenti nella generazione del codice relativi a:
- generazione di strutture switch;
- ottimizzazioni interfunzionali;
- ottimizzazione basata su informazioni di profiling;
- ottimizzazione al momento della compilazione (LTO);
Il formato interno di gcov è ora JSON, e la nuova opzione —use-hotness-colors abilita la colorazione delle righe di codice in base alla loro frequenza d'uso.
Linguaggi
Qualità e completezza dell'implementazione OpenACC nei linguaggi C, C++ e Fortran continuano a migliorare.
Linguaggi simili al C
- Supporto parziale implementato per OpenMP 5.0;
- È stata aggiunta una funzione __builtin_convertvector;
- Aggiunto avviso -Waddress-of-packed-member;
- Miglioramenti a diversi avvisi esistenti;
- Il messaggio di errore per la trasmissione a una macro con un numero errato di argomenti ora include la dichiarazione stessa della macro;
- Miglioramenti nei suggerimenti di correzione degli errori di battitura.
C
- Supporto per _Static_assert con un solo argomento per -std=c2x (futuro standard C);
- Nuovo avviso -Wabsolute-value, che intercetta il tipo di argomento errato per funzioni come abs().
C++
- Nuovi avvisi: -Wdeprecated-copy,
-Winit-list-lifetime,
-Wredundant-move,
-Wpessimizing-move,
-Wclass-conversion; - Sono in corso lavori per implementare nuove funzionalità dallo standard futuro C++ 2a;
- Il frontend ora conserva informazioni più accurate su una serie di elementi del codice sorgente, consentendo una visualizzazione più dettagliata nelle diagnosi;
- Migliorate le diagnosi per funzioni sovraccaricate, operatori binari, chiamate di funzione e stringhe di formato;
- Aggiunti correzioni automatiche supportate da alcuni ambienti di sviluppo per una serie di errori comuni (parentesi mancanti, spazi dei nomi, refusi, ecc.).
libstdc++
- L'implementazione di C++17 non è più sperimentale;
- Aggiunti algoritmi paralleli, , , e non richiede più -lstdc++fs;
- Migliorato il supporto sperimentale per C++ 2a (, , std::bind_front, ecc.);
- Supporto per l'apertura di file su Windows i cui percorsi contengono caratteri che esulano da char;
- Supporto iniziale per su Windows;
- Supporto iniziale per Networking TS.
D
La versione 2.076 del linguaggio D è inclusa in GCC.
Fortran
- Supporto completo per input/output asincrono;
- Implementato l'argomento BACK per MINLOC e MAXLOC;
- Sono state implementate le funzioni FINDLOC e IS_CONTIGUOUS;
- È stata implementata la sintassi di accesso alle componenti complesse dei numeri complessi: c%re e c%im;
- È stata implementata la sintassi str%len e a%kind;
- Sono stati implementati i descrittori C e l'intestazione ISO_Fortran_binding.h;
- Le condizioni per il risultato delle funzioni MAX e MIN sono state allentate quando uno degli argomenti è NaN;
- È stata aggiunta l'opzione -fdec-include;
- È stata aggiunta la direttiva BUILTIN.
libgccjit
- È stata aggiunta una funzione gcc_jit_context_add_driver_option.
Altro
Numerose modifiche specifiche per architettura e OS.
Fonte: linux.org.ru

