3. maja je izšel prvi javni izdaja devete različice GCC: GCC 9.1.
Vključuje številne pomembne izboljšave in dodatke v primerjavi z osmo
različico.
Opšte promene
Opcije
- Ukazi, ki sprejemajo velikost, zdaj podpirajo 64-bitne vrednosti in pripone za določanje velikosti;
- Dodana je možnost -flive-patching, za upravljanje optimizacij, ki bi lahko bile destruktivne za dinamično zamenjavo kode;
- Dodana je možnost —completion za podporo samodejnega dopolnjevanja v ukazni lupini;
- Diagnostika prevajalnika zdaj vključuje številke vrstic (-fno-diagnostics-show-line-numbers) i
informacije o tipih (fno-diagnostics-show-labels); - Dodana je možnost -fdiagnostics-format=json za izhod diagnostičnih podatkov v formatu JSON;
- Možnosti za določanje poravnave (-falign-functions, na primer) zdaj lahko sprejemajo par možnosti poravnave;
- Dodane so možnosti za filtriranje seznama datotek (-fprofile-filter-files, -fprofile-exclude-files), ki so instrumentirane s profilirnikom;
- AddressSanitizer zdaj uporablja bolj kompaktno poravnavo za zaznavanje nepravilnih dostopov do spremenljivk na skladu;
- Številne izboljšave v izhodu -fopt-info;
- Dodana je možnost -fsave-optimization-record za shranjevanje poročila o optimizacijah v datoteko;
- Dodana je možnost -fipa-stack-alignment in -fipa-reference-addressable.
Nove vgrajene funkcije
Nova atribute
- copy.
Kitas
Številne izboljšave generiranja kode, povezane z:
- generiranjem switch konstrukcij;
- med-proceduralnimi optimizacijami;
- optimizacijo na podlagi informacij o profiliranju;
- optimizacijo v fazi gradnje (LTO);
Prav tako je notranji format gcov zdaj JSON, nova možnost —use-hotness-colors pa vključuje barvanje vrstic kode glede na pogostost njihove uporabe.
Jeziki
Kakovost in celovitost realizacije OpenACC v jezikih C, C++ in Fortran se še naprej izboljšujejo.
C-podobni jeziki
- Delna podpora za OpenMP 5.0 je bila uvedena;
- Dodana funkcija __builtin_convertvector;
- Dodano opozorilo -Waddress-of-packed-member;
- Izboljšave pri vrsti obstoječih opozoril;
- Besedilo napake pri posredovanju nepravilnega števila argumentov v makro zdaj vključuje izjavo samega makra;
- Izboljšave v predlogih za popravljanje napak pri tipkanju.
C
- Podpora za _Static_assert z enim argumentom za -std=c2x (prihodni standard C);
- Novo opozorilo -Wabsolute-value, ki zazna napačen tip argumenta za take funkcije kot abs().
C++
- Nova opozorila: -Wdeprecated-copy,
-Winit-list-lifetime,
-Wredundant-move,
-Wpessimizing-move,
-Wclass-conversion; - Работа над реализацией новых функций из будущего стандарта продолжается. C++ 2a;
- Фронтенд теперь сохраняет более точную информацию о ряде элементов исходного кода, что позволяет более детально отображать информацию в диагностических сообщениях.
- Улучшены диагностические инструменты для перегруженных функций, бинарных операторов, вызовов функций и строк, задающих формат.
- Добавлены автоматически исправляющие средства, поддерживаемые некоторыми средами разработки, для ряда популярных ошибок (отсутствие скобок, пространства имён, опечатки и т.д.).
libstdc++
- Реализация C++17 больше не является экспериментальной.
- Добавлены параллельные алгоритмы, <execution>, <memory_resource>, а <filesystem> больше не требует -lstdc++fs.
- Улучшена экспериментальная поддержка C++ 2a (<bit>, <version>, std::bind_front и т.д.).
- Поддержка открытия файловых потоков на Windows с путями, содержащими символы вне диапазона char.
- Начальная поддержка <filesystem> на Windows.
- Начальная поддержка Networking TS.
D
Язык D версии 2.076 включён в состав GCC.
Fortran
- Полная поддержка асинхронного ввода/вывода.
- Реализован аргумент BACK для MINLOC и MAXLOC.
- Реализованы функции FINDLOC и IS_CONTIGUOUS.
- Реализован синтаксис доступа к составным частям комплексных чисел: c%re и c%im.
- Реализован синтаксис str%len и a%kind.
- Реализованы дескрипторы C и заголовок ISO_Fortran_binding.h.
- Снижены требования на результат функций MAX и MIN, когда один из аргументов является NaN.
- Dodana je možnost -fdec-include;
- Dodana direktiva BUILTIN.
libgccjit
- Dodana funkcija gcc_jit_context_add_driver_option.
Kitas
Множество архитектурных и ОС-специфичных изменений.
Izvor: linux.org.ru

