|
| 1 | +# Release 3.16 |
| 2 | + |
| 3 | +Code generation and optimization: |
| 4 | +- Extend neededness analysis to 64-bit integer operations, enabling more useless integer computations to be removed. |
| 5 | +- Extend common subexpression elimination (CSE) and dead code elimination to calls to known pure built-in functions and to known pure arithmetic helper functions. |
| 6 | +- Generation of position-independent code (PIC) for AArch64, RISC-V and x86-64 (option `-fpic`) (#551) |
| 7 | +- Generation of position-independent executables (PIE) for AArch64, RISC-V and x86-64 (option `-fpie`) (#551) |
| 8 | +- RISC-V: use PC-relative addressing instead of absolute addressing where possible (#550) |
| 9 | +- PowerPC and x86/ELF: put jump tables in `.rodata` section instead of `.text` section (#508) |
| 10 | + |
| 11 | +Bug fixes: |
| 12 | +- Reject identifiers consisting of a single `$` sign. This can cause errors with some assemblers, and is not ISO C. |
| 13 | +- Remove syntactic support for `[*]` array declarators, which was introduced in 3.15 (#539). They are usable only with variable-length arrays, which CompCert doesn't support. |
| 14 | +- Check that `[static <size>]` declarators occur only in function prototypes and only in outermost position, as prescribed by ISO C. |
| 15 | +- Fix corner case of designated initializers involving union with anonymous members. |
| 16 | +- Fix wrong lexing of `#pragma` directives that immediately follow a `//` single-line comment. (Affects only non-preprocessed `.i` input files; preprocessed `.c` files are not affected.) |
| 17 | + |
| 18 | +Usability: |
| 19 | +- Added warning `dollar-in-identifier-extension` for identifiers that contain `$` signs. (This is not ISO C, just a popular extension.) |
| 20 | +- Revised handling of unknown warnings: `-W<unknown warning>` is now a warning instead of an error; `-Wno-<unknown warning>` is silently ignored (#554). |
| 21 | +- Added warning `unknown-warning-option`, so that warnings about unknown warnings can be ignored (`-Wno-unknown-warning-option`) or turned into an error (`-Werror=unknown-warning-option`) (#554). |
| 22 | +- Recognize option `-shared` and pass it to the linker. |
| 23 | +- Recognize options `-pie` and `-no-pie` and pass them to the linker. |
| 24 | +- Recognize options `-MD` and `-MMD` and pass them to the preprocessor. |
| 25 | +- On BSD platforms, use `cc` instead of `gcc` as the default preprocessor and linker. |
| 26 | + |
| 27 | +Rocq/Coq development: |
| 28 | +- Support Coq 8.21 (#545) |
| 29 | +- Support Rocq 9.0 (using the `coq` compatibility command) (#547) |
| 30 | +- Earliest version supported is now Coq 8.15. |
| 31 | +- Updated vendored Flocq to version 4.2.1 |
| 32 | + |
1 | 33 | # Release 3.15, 2024-12-13 |
2 | 34 |
|
3 | 35 | C language support: |
|
0 commit comments