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-функції, наприклад) тепер можуть приймати кілька варіантів вирівнювання;
  • Додані опції для фільтрації списку файлів (-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 не є експериментальної;
  • Додані паралельні алгоритми, , , а більше не потребує -lstdc++fs;
  • Поліпшено експериментальну підтримку C++ 2a ( , , std::bind_front і т.д.);
  • Підтримка відкриття потоків файлів на Windows, шляхи яких містять символи, що виходять за рамки char;
  • Початкова підтримка на Windows;
  • Початкова підтримка Networking TS.
D

Мова D версії 2.076 включена до складу GCC.

Фортран
  • Повна підтримка асинхронного введення/виводу;
  • Реалізовано аргумент BACK для MINLOC та MAXLOC;
  • Реалізовано функції FINDLOC та IS_CONTIGUOUS;
  • Реалізовано синтаксис доступу до складових частин комплексних чисел: c%re та c%im;
  • Реалізовано синтаксис str%len та a%kind;
  • Реалізовано дескриптори C та заголовок ISO_Fortran_binding.h;
  • Ослаблені вимоги на результат функцій MAX та MIN, коли один із аргументів є NaN;
  • Додана опція -fdec-include;
  • Додано директиву Вбудований.
libgccjit

Інше

Безліч архітектурно- та ОС-специфічних змін.

Джерело: linux.org.ru

Додати коментар або відгук