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 (болашақ C стандарты) үшін бір аргументпен _Static_assert қолдауы;
- Жаңа ескерту -Абсолюттік мән, ол abs() сияқты функциялар үшін қате аргумент түрін ұстайды.
C ++
- Жаңа ескертулер: -W ескірген-көшірме,
-Winit-list-өмір уақыты,
-Ерексіз қозғалыс,
-Wpessizing-қозғалысы,
-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_опциясы.
Басқа
Архитектураға және ОЖ-ға тән көптеген өзгерістер.
Ақпарат көзі: linux.org.ru