v0.6.3 (2020-10-17)

Bug fixes:
  • fix missing inlining of _Generic expression
  • fix evaluation error with assignment of qualified arrays
  • delay ‘empty character constant’ warning to phase 5
  • simplify & fix parsing of array declarators
  • accept whitespace after option -U
  • teach dissect about _Generic
  • reset locale after gtk_init() to workaround problems with strtold()
  • fix linearization of shift-assign
  • force to 0 expressions which are erroneously non-constant
  • fix evaluate_ptr_add() when sizeof(offset) != sizeof(pointer)
  • fix access to defining instruction in simplify_unop()
  • fix evaluation of pointer to bool conversions
  • fix usual conversion of integers
  • fix null pointer deref on return expression with invalid type
New features:
  • add support for arch specific asm constraints
  • add memory asm constraint for PPC & S390
  • prepend diagnostics with source’s path and include chain
  • add support for h8300, microblaze, nds32, openrisc, sh & xtensa
  • add support for ‘-march=….’ and use it for riscv
  • add an option to specify the OS: –os=$OS
  • add predefines for OS identification
  • add predefines for __INT_LEAST${N}_TYPE__ & __INT_FAST${N}_TYPE__
  • document the sparse’s extensions
  • sindex/semind: allow indexing outside the project tree
  • rename tool ‘sindex’ to ‘semind’
  • add builtin support for __sync_{bool,val}_compare_and_swap()
  • add support for wide strings
  • union-cast: teach sparse about union casts
  • add support for a new instruction: OP_FMADD
  • add various warnings for dangerous usage of flexible array members
  • add builtin support for __builtin_ia32_pause()
Misc changes:
  • cleanup the handling of options flags
  • avoid multiple warnings when inlining undeclared calls
  • small fixes for alpha, arm, nios2, ppc, sparc & x86
  • add missing predefines for endianness on arm, arm64, mips
  • add various missing arch-specific predefines
  • add the predefines ‘__cdecl’, … on cygwin
  • warn on empty assignments & initializations
  • reorganize the keyword parsing table
  • the message in _Static_assert() is now optional (C2x)
  • small fixes & improvement to the [online] documentation
  • allow [*] in array declarators
  • do not accept comma expressions in array declarator
  • simplify parsing of attributes & storage class
  • bad-shift: wait dead code elimination to warn about bad shifts
  • fix is_scalar_type(): fouled types are scalars too
  • better support for linearization of builtins
  • remove definition of removed OP_{AND,OR}_BOOL