Numerosas otimizações gerais foram adicionadas, tais como análise de alias, melhorias de vetorizadores, dobramento de código idêntico, análise inter-processal, passe de otimização de fusão de lojas, e outras.
O endereço Sanitizer foi melhorado. O Higienizador de Vazamento e o Higienizador de Comportamento Indefinido foram adicionados.
As informações de depuração podem agora ser produzidas no formato DWARF5. Esta capacidade é experimental.
Novos avisos e diagnósticos melhorados foram acrescentados para a detecção estática de mais erros de programação.
O GCC foi ampliado para fornecer ferramentas para garantir o endurecimento adicional do código gerado. As melhorias relacionadas com a segurança incluem incorporações para verificação de transbordamento, proteção adicional contra choques de pilha, verificação de endereços-alvo de instruções de controle de fluxo, avisos para funções de manipulação de cordas delimitadas e avisos para detectar índices de matriz fora de limites.
Várias novas opções específicas de arquitetura para a arquitetura Intel AVX-512, várias de suas microarquiteturas e Extensões de Proteção de Software Intel (SGX) foram adicionadas.
A geração de códigos pode agora ter como alvo as extensões LSE de arquitetura ARM de 64 bits, ARMv8.2-A Extensões de ponto flutuante de 16 bits (FPE) e ARMv8.2-A, ARMv8.3-A, e ARMv8.4-A versões de arquitetura.
A nova extensão __auto_ tipo GNU C fornece um subconjunto da funcionalidade da palavra-chave C 11 auto na linguagem C.
Os nomes dos tipos _FloatN e _FloatNx especificados pela norma ISO/IEC TS 18661-3:2015 são agora reconhecidos pelo front end C.
Passar uma classe vazia como argumento agora não ocupa espaço nas arquiteturas Intel 64 e AMD64, como exigido pela plataforma ABI.
O valor retornado pelo operador C 11 alignof foi corrigido para combinar com o operador C _Alignof e retornar alinhamento mínimo. Para encontrar o alinhamento preferido, use a extensão GNU __alignof__.