Los compiladores de la serie GCC 10 llegan con una actualización importante

GCC (GNU Compiler Collection) 10.1, una versión importante de la plataforma, se publicó el 7 de mayo de 2020, con aspectos destacados que incluyen capacidades C ++ 20 y soporte de lenguaje C2X. C2X es la próxima revisión importante del lenguaje C, prevista para 2022. 

Las notas de la versión para GCC 10 muestran que se han implementado una multitud de características de C ++ 20, incluido el permiso de ensamblado en línea en funciones constexpr y la extensión de enlaces estructurados. También para C ++ 20, GCC 10 permite conversiones a matrices de límite desconocido, permite la inicialización predeterminada trivial en contextos constexpr, agrega la constinitpalabra clave y desaprueba la  volatile palabra clave.

Para C2X, la próxima revisión del estándar ISO C, varias características son compatibles con la sintaxis  -std=c2xy -std+gnu2x. Entre ellas se encuentran strftimela comprobación de formato de apoyo a la %OBy %Obformatos UTF-8 y las constantes de caracteres utilizando el U8' 'sintaxis.

GCC, que existe desde hace más de 33 años, incluye interfaces y bibliotecas para C, C ++, Fortran, Ada, Go y D. Se ha publicado un boletín sobre la migración a GCC 10. Otras capacidades nuevas en GCC 10.1 incluyen

  • Se han agregado funciones integradas, incluido un has_builtinoperador de preprocesador que se puede utilizar para consultar el soporte para funciones integradas proporcionadas por GCC y otros compiladores que lo admiten. 
  • Se han agregado opciones de comando. Estos incluyen  -fallocation-dce, para eliminar pares de operadores newy innecesarios deletey -fanalyzer, para habilitar una nueva pasada de análisis estático y las advertencias asociadas. Esta última opción debe considerarse en fase experimental.
  • Se realizaron mejoras de optimización interprocedimiento. Estos incluyen la reimplementación de los reemplazos escalares entre procedimientos de agregados (IPA-SRA) que se volvió a implementar para que funcione en el momento del enlace. IPA-SRA ahora también puede eliminar la computación y devolver valores de retorno no utilizados.
  • Las mejoras de optimización del tiempo de enlace incluyen un nuevo binario ito-dump. El programa puede volcar diversa información sobre un bytearchivo de objeto LTO .
  • Se han realizado mejoras de optimización basadas en perfiles, incluida la mejora del mantenimiento del perfil durante la compilación y la partición en caliente / en frío.
  • Para la familia C, la accessfunción y el typeatributo se han agregado para describir cómo una función accede a los objetos que se le pasan por puntero o referencia, y para asociar dichos argumentos con argumentos enteros que denotan el tamaño del objeto. El atributo se utiliza para permitir la detección de accesos no válidos mediante funciones definidas por el usuario. También hay nuevas advertencias y mejoras a las advertencias existentes. Una advertencia, -Wzero-length-boundsadvierte sobre el acceso a elementos de matrices de longitud cero que podrían superponerse a otros miembros del mismo objeto.
  • Se solucionó una incompatibilidad ABI entre C ++ 14 y C ++ 17. En algunos destinos, una clase con un subobjeto de tamaño cero se pasaría incorrectamente cuando se compilara como C ++ 17 o C ++ 20.