CompCert Release 18.10
----------------------


New features
------------
● New versions of the isel/usel builtin functions 
  for signed and unsigned long long as well as _Bool.
  
● CompCert now defines the C11 type max_align_t, 
  a type whose alignment requirement is at least as strict (large)
  as that of every scalar type.
  
● Extended configuration editor to allow specification 
  of additional preprocessor options.
  
● String literals are now accepted as l-values 
  and their address can be taken.
  
● CompCert now rejects invalid unnamed parameters in function definitions.


Improved handling of _Alignof and _Alignas
-----------------------------------------
● _Alignof now only accepts types as arguments 
  and returns the natural alignment in bytes.
  
● _Alignas is now rejected in illegal places 
  such as typedefs, bit-fields, functions and register class variables.
  
● More GCC-compatible handling of the "aligned" attribute, 
  analogously to the _Alignas operator.
  
● CompCert now allows _Alignas(0) intending no alignment change.


Diagnostics
-----------
● New diagnostics for:

  ● tentative static definitions with incomplete types
  ● unknown attributes used for function parameters
  ● alignment requests that reduce the alignment 
    below the natural alignment
  ● external function declarations after definitions
  ● definitions and uses of static variables 
    in nonstatic inline functions
  ● nested structs with flexible array members and structures
    containing only flexible array members
  ● illegal uses of _Alignas as outlined above

● Diagnostics for C11 extensions are now disabled by default. 
  They can be re-enabled by specifying -Wc11-extensions.
  
● Improved diagnostics for type-qualified arrays.

● Improved the wording and unified the formatting 
  of various diagnostics messages.


Valex
-----
New configurable check for correct placement of symbols in sections.


Other improvements
------------------
● Local re-definitions of typedefs are now allowed.

● CompCert now rejects non-standard applications 
  of the restrict type qualifier.

● Improved support for type-qualified arrays.

● Improved support for long long in extended assembler statements
  for the hybrid PowerPC backend.

● CompCert now inserts NOP instructions after AIS annotations 
  when the annotation is followed by a label.


Fixes
-----
● CompCert no longer accepts the comma operator in constant expressions.

● Fix for abortion in assembling pass caused by overly large 
  branch distances on 64-bit PowerPC platforms. The overflow could be
  triggered by the use of large 64-bit integer immediate constants 
  in the code between the branch and its branch target.
  
● Fixed the passing of the option -u to the linker 
  to mark a symbol as undefined.


------------------------------------------------------------------------------
Last modified on 12 October 2018 by alex@absint.com. Copyright 2018 AbsInt.
------------------------------------------------------------------------------
An HTML version of these release notes is available at
absint.com/releasenotes/compcert/18.10