CompCert release 20.10

New features

  • Support for C11 _Static_assert.
  • Support for the GCC attribute used.
  • New built-in functions for all backends:
    • __builtin_nanf
    • __builtin_nansf
    • __builtin_inff
    • __builtin_inf
    • __builtin_huge_valf
    • __builtin_huge_val
  • New __builtin_constant_p that returns 1 if the argument is a constant expression, 0 otherwise.
  • New built-in functions for ARM for checking of floating point values:
    • __builtin_copysignf
    • __builtin_isnanf
    • __builtin_isnan
    • __builtin_isinff
    • __builtin_isinf
    • __builtin_isfinitef
    • __builtin_isfinite
  • RISC-V backend: Added support for __builtin_clz* and __builtin_ctz*.
  • AArch64 backend: Added support for __builtin_ctz*.
  • New option --version-file that prints the version information in a machine-readable way.

Improved diagnostics

  • Improved diagnostics for use of bit-field members in packed structs.
  • Improved diagnostics for wrong number of arguments in call to __builtin_va_start.
  • Improved diagnostics for illegal pointer arithmetic.

Other improvements

  • Introduced new error message for redefining a built-in function.
  • Eliminated known builtins whose result is ignored.
  • Improved location information for diagnostics inside switch-statements.
  • Added __builtin_sqrt as alias for __builtin_fsqrt.

Fixes

  • Reset registers reserved per pragma after processing each file.