No dia 3 de maio ocorreu o primeiro lançamento público da nona versão do GCC: GCC 9.1.
Ele contém muitas melhorias e adições significativas em comparação com o oitavo
versão.
Mudanças gerais
Opções
- Comandos que aceitam tamanho agora suportam valores e sufixos de 64 bits para especificar tamanho;
- Opção adicionada -flive-patching,para controlar otimizações que são potencialmente destrutivas para a substituição dinâmica de código;
- Adicionada opção --completion para suportar o preenchimento automático no shell de comando;
- O diagnóstico do compilador agora inclui números de linha (-fno-diagnostics-show-line-numbers) E
digite informações (fno-diagnóstico-mostra-rótulos); - Opção adicionada -fdiagnóstico-formato=json para gerar diagnósticos no formato JSON;
- Opções para especificar o alinhamento (-falign-funções, por exemplo) agora pode aceitar algumas opções de alinhamento;
- Adicionadas opções para filtrar a lista de arquivos (-fprofile-filtro-arquivos, -fprofile-excluir arquivos), que são instrumentados pelo criador de perfil;
- AddressSanitizer agora usa alinhamento mais compacto para capturar acessos inválidos a variáveis na pilha;
- Numerosas melhorias de saída -fopt-info;
- Opção adicionada -fsave-otimização-registro para salvar o relatório de otimização em um arquivo;
- Opção adicionada -fipa-stack-alignment и -fipa-referência-endereçável.
Novos recursos integrados
Novo atributo
Outro
Numerosas melhorias na geração de código relacionadas a:
- geração de construções de switch;
- otimizações interprocedimentais;
- otimização baseada em informações de perfil;
- otimização na fase de montagem (LTO);
Além disso, o formato interno do gcov agora é JSON, e a nova opção --use-cores-quentes envolve colorir linhas de código com base na frequência com que são usadas.
Idiomas
Qualidade e integridade da implementação OpenACC as linguagens C, C++ e Fortran continuam a melhorar.
Linguagens semelhantes a C
- O suporte parcial para OpenMP 5.0 foi implementado;
- Função adicionada __builtin_convertvector;
- Adicionado aviso -Waddress-of-packed-membro;
- Melhorias em vários avisos existentes;
- O texto de erro ao passar o número errado de argumentos para uma macro agora inclui a declaração da própria macro;
- Melhorias nas sugestões de correção de erros de digitação.
C
- Suporte _Static_assert com um argumento para -std=c2x (futuro padrão C);
- Novo aviso -Wabsoluto-valor, que captura o tipo de argumento errado para funções como abs().
C + +
- Novos avisos: -Wdeprecated-copy,
-Winit-list-vida,
-Movimento Wredundant,
-Wpessimizando-movimento,
-Wclass-conversão; - O trabalho está em andamento para implementar novos recursos do futuro padrão C++2a;
- O frontend agora armazena informações mais precisas sobre vários elementos do código-fonte, o que permite exibir informações mais detalhadas em diagnósticos;
- Diagnóstico aprimorado para funções sobrecarregadas, operadores binários, chamadas de função e strings de formato;
- Adicionadas correções automáticas suportadas por alguns ambientes de desenvolvimento para vários erros populares (parênteses ausentes, namespaces, erros de digitação, etc.).
libstdc ++
- A implementação do C++ 17 não é mais experimental;
- Adicionados algoritmos paralelos, , , A não requer mais -lstdc++fs;
- Suporte experimental aprimorado para C++2a ( , , std::bind_front, etc.);
- Suporte para abertura de fluxos de arquivos no Windows cujos caminhos contêm caracteres não-char;
- Suporte inicial no Windows;
- Suporte inicial para Networking TS.
D
A versão 2.076 da linguagem D está incluída no GCC.
Fortran
- Suporte completo para E/S assíncrona;
- Argumento BACK implementado para MINLOC e MAXLOC;
- Implementadas funções FINDLOC e IS_CONTIGOUS;
- Foi implementada a sintaxe de acesso aos componentes dos números complexos: c%re e c%im;
- Sintaxe implementada str%len e a%kind;
- Implementados descritores C e cabeçalho ISO_Fortran_binding.h;
- Requisitos relaxados para o resultado das funções MAX e MIN quando um dos argumentos é NaN;
- Opção adicionada -fdec-incluir;
- Diretiva adicionada CONSTRUÍDAS EM.
libgccjit
- Função adicionada gcc_jit_context_add_driver_option.
Outro
Muitas mudanças específicas de arquitetura e sistema operacional.
Fonte: linux.org.ru