Skip to content

CompCert 3.2

Compare
Choose a tag to compare
@xavierleroy xavierleroy released this 16 Jan 08:11
· 881 commits to master since this release

Release 3.2, 2018-01-15

Code generation and optimization

  • Inline static functions that are called only once. Can be turned off by setting the "noinline" attribute on the function.
  • More consistent detection and elimination of divisions by 1.
  • ARM in Thumb mode: simpler instruction sequence for branch through jump table.
  • ARM: support and use the "cmn" instruction.
  • Issue #208: make value analysis of comparisons more conservative for dubious comparisons such as (uintptr_t) &global == 0x1234 which are undefined behavior in CompCert.

Usability

  • Resurrected support for the Cygwin x86-32 port, which got lost at release 3.0.
  • Support the noinline attribute on C function definitions.
  • PowerPC port with Diab toolchain: support -t <target processor> option and pass it to the Diab tools.
  • Clightgen tool: add -o option to specify output file.
  • Pull request #192: improve the printing of Clight intermediate code so that it looks more like valid C source. (Frédéric Besson)

Bug fixing

  • Issue #P25: make sure sizeof(long double) = sizeof(double) in all contexts.
  • Issue #211: wrong scoping for C99 declarations within a "for" statement.
  • Issues #215 and #216: updates to clightgen.

Coq and Caml development

  • Pull request #191: Support Coq version 8.7.0 and 8.7.1 in addition to Coq 8.6.1. Coq 8.6 (.0) is no longer supported owing to an incompatibility with 8.7.0. (Sigurd Schneider)
  • ARM code generator: refactoring of constant expansions and EABI fixups.
  • Resynchronized the list of dual-licensed files given in file LICENSE and the copyright headers of the dual-licensed files.