GCC 9.1

3 мая состоялся первый публичный выпуск девятой версии GCC: GCC 9.1.
Он содержит множество существенных улучшений и добавлений по сравнению с восьмой
версией.

Общие изменения

Опции
  • Команды, принимающие размер, теперь поддерживают 64-битные значения и суффиксы для указания размера;
  • Добавлена опция -flive-patching, для управления оптимизациями, потенциально деструктивными для динамической замены кода;
  • Добавлена опция —completion для поддержки авто-дополнения в командной оболочке;
  • Диагностики компилятора теперь включают номера строк (-fno-diagnostics-show-line-numbers) и
    информацию о типах (fno-diagnostics-show-labels);
  • Добавлена опция -fdiagnostics-format=json для вывода диагностик в формате JSON;
  • Опции для указания выравнивания (-falign-functions, например) теперь могут принимать пару вариантов выравнивания;
  • Добавлены опции для фильтрации списка файлов (-fprofile-filter-files, -fprofile-exclude-files), которые подвергаются инструментированию профилировщиком;
  • AddressSanitizer теперь использует более компактное выравнивание для отлова некорректных обращений к переменным на стеке;
  • Многочисленные улучшения в выводе -fopt-info;
  • Добавлена опция -fsave-optimization-record для сохранения отчёта об оптимизациях в файл;
  • Добавлена опция -fipa-stack-alignment и -fipa-reference-addressable.
Новые встроенные функции
Новый атрибут
Другое

Многочисленные улучшения кодогенерации связанные с:

  • генерацией switch-конструкций;
  • меж-процедурными оптимизациями;
  • оптимизацией, основанной на информации о профилированнии;
  • оптимизацией на этапе сборки (LTO);

Также внутренним форматом gcov теперь является JSON, а новая опция —use-hotness-colors включает раскрашивание строк кода в зависимости от частоты их использования.

Языки

Качество и полнота реализации OpenACC в языках C, C++, и Fortran продолжают улучшаться.

С-подобные языки
  • Реализована частичная поддержка OpenMP 5.0;
  • Добавлена функция __builtin_convertvector;
  • Добавлено предупреждение -Waddress-of-packed-member;
  • Улучшения в ряде существующих предупреждений;
  • Текст ошибки при передаче в макрос неправильного количества аргументов теперь включает объявление самого макроса;
  • Улучшения в предложениях об исправлении опечаток.
C
  • Поддержка _Static_assert с одним аргументом для -std=c2x (будущий стандарт C);
  • Новое предупреждение -Wabsolute-value, которое отлавливает неправильный тип аргумента для таких функций как abs().
C++
  • Новые предупреждения: -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;
  • Добавлена опция -fdec-include;
  • Добавлена директива BUILTIN.
libgccjit

Другое

Множество архитектурно- и ОС-специфичных изменений.

Источник: linux.org.ru

Добавить комментарий