3-майда GCC тогузунчу версиясынын биринчи коомдук релизи болуп өттү: GCC 9.1.
Ал сегизинчиге салыштырмалуу көптөгөн олуттуу жакшыртууларды жана толуктоолорду камтыйт
версия.
Жалпы өзгөрүүлөр
Жолдор
- Өлчөмдү кабыл алган буйруктар эми 64 биттик маанилерди жана өлчөмдү көрсөтүү үчүн суффикстерди колдойт;
- Кошулган опция - чымын-чиркей,динамикалык, кодду алмаштырууга зыян келтирүүчү оптималдаштырууну көзөмөлдөө;
- Команданын кабыгында автотолтурууну колдоо үчүн --толгоо опциясы кошулду;
- Компилятордун диагностикасы азыр сап номерлерин камтыйт (-fno-диагностика-сап-сандарды көрсөтүү) жана
маалымат түрү (fno-диагностика-белгилерин көрсөтүү); - Кошулган опция -fdiagnostics-format=json диагностиканы JSON форматында чыгаруу үчүн;
- Тегиздөөнүн параметрлери (-falign-функциялары, мисалы) эми тегиздөөнүн бир нече варианттарын кабыл ала алат;
- Файлдардын тизмесин чыпкалоо үчүн кошумча опциялар (-fprofile-фильтр-файлдар, -fprofile-exclude-файлдар), профилатор тарабынан орнотулган;
- AddressSanitizer азыр стектеги өзгөрмөлөргө жараксыз кирүүлөрдү кармоо үчүн компакттуу тегиздөөнү колдонот;
- Көптөгөн чыгаруу жакшыртуу -fopt-info;
- Кошулган опция -fsave-optimization-record оптималдаштыруу отчетун файлга сактоо үчүн;
- Кошулган опция -fipa-стек-тегиздөө и -fipa-маалымат-даректүү.
Жаңы орнотулган функциялар
Жаңы атрибут
башка
Төмөнкүлөргө байланыштуу көптөгөн коддорду түзүү жакшыртуулары:
- коммутатор конструкцияларын генерациялоо;
- процедуралар аралык оптималдаштыруу;
- профилдик маалыматтын негизинде оптималдаштыруу;
- монтаждоо стадиясында оптималдаштыруу (LTO);
Ошондой эле gcovтун ички форматы азыр JSON жана жаңы вариант --пайдалануу-ысык-түстөр коддун сызыктарын алардын канчалык көп колдонулганына жараша боёкту камтыйт.
тилдер
ишке ашыруунун сапаты жана толуктугу OpenACC C, C++ жана Fortran тилдери өркүндөтүүнү улантууда.
C сыяктуу тилдер
- OpenMP 5.0 үчүн жарым-жартылай колдоо ишке ашырылды;
- Кошулган функция __курулган_конвертектор;
- Кошулган эскертүү -Топ-топтолгон мүчө;
- Учурдагы бир катар эскертүүлөрдү жакшыртуу;
- Макроско туура эмес сандагы аргументтерди өткөрүүдө ката тексти эми макростун декларациясын камтыйт;
- Жазуунун катасын оңдоо боюнча сунуштарды жакшыртуу.
C
- -std=c2x үчүн бир аргумент менен _Static_assertти колдоо (келечектеги C стандарты);
- Жаңы эскертүү - Абсолюттук маани, бул abs() сыяктуу функциялар үчүн туура эмес аргумент түрүн кармайт.
C ++
- Жаңы эскертүүлөр: -Wdeprecated-copy,
-Winit-list-өмүр бою,
- Кыймылсыз,
-Wpessimizing-motion,
-Wclass-конверсия; - Келечектеги стандарттан жаңы функцияларды ишке киргизүү боюнча иштер жүрүп жатат C++ 2a;
- Frontend азыр бир катар баштапкы коддун элементтери жөнүндө так маалыматты сактайт, бул диагностикада кеңири маалыматты көрсөтүүгө мүмкүндүк берет;
- Ашыкча жүктөлгөн функциялар, экилик операторлор, функция чалуулары жана формат саптары үчүн жакшыртылган диагностика;
- Бир катар таанымал каталар үчүн (жетишпеген кашаалар, аттар мейкиндиктери, тамгалар ж.б.) кээ бир иштеп чыгуу чөйрөлөрү тарабынан колдоого алынган автоматтык оңдоолор кошулду.
libstdc++
- C++ 17 ишке ашыруу мындан ары эксперименталдык эмес;
- Кошулган параллелдүү алгоритмдер, , , А мындан ары -lstdc++fs талап кылбайт;
- C++ 2a үчүн жакшыртылган эксперименталдык колдоо ( , , std::bind_front, ж.б.);
- Жолдору символдордон башка символдорду камтыган Windowsта файл агымдарын ачууну колдоо;
- Баштапкы колдоо Windows боюнча;
- Networking TS үчүн баштапкы колдоо.
D
D тилинин 2.076 версиясы GCCге киргизилген.
Fortran
- Асинхрондук киргизүү/чыгаруу үчүн толук колдоо;
- MINLOC жана MAXLOC үчүн BACK аргументи ишке ашырылды;
- FINDLOC жана IS_CONTIGOUS функциялары ишке ашырылды;
- Татаал сандардын компоненттерине жетүү синтаксиси ишке ашырылган: c%re жана c%im;
- Ишке ашырылган синтаксис str%len жана a% kind;
- Ишке ашырылган C дескрипторлору жана ISO_Fortran_binding.h аталышы;
- Аргументтердин бири NaN болгондо MAX жана MIN функцияларынын натыйжасы үчүн жеңилдетилген талаптар;
- Кошулган опция -fdec-камтыйт;
- Директива кошулду КУРУЛГАН.
libgccjit
- Кошулган функция gcc_jit_context_add_driver_option.
башка
Көптөгөн архитектура жана OS өзгөчө өзгөрүүлөр.
Source: linux.org.ru