3 maja miało miejsce pierwsze publiczne wydanie dziewiątej wersji GCC: GCC 9.1.
Zawiera wiele znaczących ulepszeń i uzupełnień w porównaniu do ósemki
wersja.
Zmiany ogólne
Opcje
- Polecenia akceptujące rozmiar obsługują teraz wartości 64-bitowe i przyrostki określające rozmiar;
- Dodano opcję -flive-łatanie, aby kontrolować optymalizacje, które są potencjalnie destrukcyjne dla dynamicznej wymiany kodu;
- Dodano opcję --completion do obsługi automatycznego uzupełniania w powłoce poleceń;
- Diagnostyka kompilatora obejmuje teraz numery linii (-fno-diagnostics-show-line-numbers) I
wpisz informacje (fno-diagnostics-show-labels); - Dodano opcję -fdiagnostics-format=json do wyprowadzania diagnostyki w formacie JSON;
- Opcje określania wyrównania (-Falign-funkcjena przykład) może teraz zaakceptować kilka opcji wyrównania;
- Dodano opcje filtrowania listy plików (-fprofile-pliki-filtrujące, -fprofile-exclude-files), które są oprzyrządowane przez profiler;
- AddressSanitizer wykorzystuje teraz bardziej zwarte wyrównanie do wychwytywania nieprawidłowych dostępów do zmiennych na stosie;
- Liczne ulepszenia wydajności -fopt-informacje;
- Dodano opcję -fsave-rekord-optymalizacji aby zapisać raport optymalizacji do pliku;
- Dodano opcję -fipa-wyrównanie stosu и -adresowalny-fipa-referencyjny.
Nowe wbudowane funkcje
- __builtin_expect_with_prawdopodobieństwem;
- __builtin_has_attribute;
- __builtin_speculation_safe_value.
Nowy atrybut
Inny
Liczne ulepszenia generowania kodu związane z:
- generowanie konstrukcji przełączników;
- optymalizacje międzyproceduralne;
- optymalizacja w oparciu o informacje profilowane;
- optymalizacja na etapie montażu (LTO);
Również wewnętrznym formatem gcov jest teraz JSON i nowa opcja --użyj-gorących-kolorów polega na kolorowaniu linii kodu w zależności od tego, jak często są używane.
Języki
Jakość i kompletność realizacji OtwórzACC języki C, C++ i Fortran są nadal udoskonalane.
Języki typu C
- Zaimplementowano częściową obsługę OpenMP 5.0;
- Dodano funkcję __builtin_convertvector;
- Dodano ostrzeżenie -Adres-członka-spakowanego;
- Ulepszenia wielu istniejących ostrzeżeń;
- Tekst błędu podczas przekazywania nieprawidłowej liczby argumentów do makra zawiera teraz deklarację samego makra;
- Ulepszenia sugestii poprawiania literówek.
C
- Obsługa _Static_assert z jednym argumentem dla -std=c2x (przyszły standard C);
- Nowe ostrzeżenie -Wwartość-absolutna, który przechwytuje niewłaściwy typ argumentu dla funkcji takich jak abs().
C + +
- Nowe ostrzeżenia: -Wprzestarzała-kopia,
-Winit-lista-lifetime,
-Niepotrzebny ruch,
-Wpesymizujący-ruch,
-Konwersja klasy W; - Trwają prace nad wdrożeniem nowych funkcjonalności z przyszłego standardu C++2a;
- Frontend przechowuje teraz dokładniejsze informacje o szeregu elementów kodu źródłowego, co pozwala na wyświetlenie bardziej szczegółowych informacji w diagnostyce;
- Ulepszona diagnostyka przeciążonych funkcji, operatorów binarnych, wywołań funkcji i ciągów formatujących;
- Dodano automatyczne poprawki obsługiwane przez niektóre środowiska programistyczne dla wielu popularnych błędów (brakujące nawiasy, przestrzenie nazw, literówki itp.).
libstdc++
- Implementacja C++ 17 nie jest już eksperymentalna;
- Dodano algorytmy równoległe, , , A nie wymaga już -lstdc++fs;
- Ulepszona obsługa eksperymentalna dla C++ 2a ( , , std::bind_front itp.);
- Obsługa otwierania strumieni plików w systemie Windows, których ścieżki zawierają znaki inne niż znakowe;
- Wstępne wsparcie w systemie Windows;
- Początkowe wsparcie dla Networking TS.
D
Wersja językowa D 2.076 jest zawarta w GCC.
Fortran
- Pełna obsługa asynchronicznych wejść/wyjść;
- Zaimplementowano argument BACK dla MINLOC i MAXLOC;
- Zaimplementowano funkcje FINDLOC i IS_CONTIGOUS;
- Zaimplementowano składnię dostępu do składników liczb zespolonych: c%re i c%im;
- Zaimplementowano składnię str%len i a%kind;
- Zaimplementowano deskryptory C i nagłówek ISO_Fortran_binding.h;
- Łagodzone wymagania dotyczące wyniku funkcji MAX i MIN, gdy jednym z argumentów jest NaN;
- Dodano opcję -fdec-include;
- Dodano dyrektywę WBUDOWANE.
libgccjit
- Dodano funkcję gcc_jit_context_add_driver_option.
Inny
Wiele zmian specyficznych dla architektury i systemu operacyjnego.
Źródło: linux.org.ru