Sparse pre-release v0.6.0-rc1 is now pushed out and contains 850 patches made by 10 people. The source code can be found at its usual repository: git://git.kernel.org/pub/scm/devel/sparse/sparse.git v0.6.0-rc1 The tarballs are found at: https://www.kernel.org/pub/software/devel/sparse/dist/ Many thanks to people who have contributed to this release: Ramsay Jones, Randy Dunlap, Uwe Kleine-König, Joey Pabalinas, John Levon, Ben Dooks, Jann Horn, Logan Gunthorpe and Vincenzo Frascino. Special thanks to Ramsay Jones who has reviewed numerous of my patches, tested many of my series and found many of my typos. Since a few weeks I've taken over Sparse's maintainership and I would like to thank, Christopher Li, for his work as maintainer since 2009. The main changes since the previous release (v0.5.2) are: * by default, disable warnings about unknown attributes * no more warnings about sizeof(void) unless -Wpointer-arith is given * add support for __has_attribute() & __has_builtin() * many fixes for type evaluation/checking * the build should be more friendly for distros * a huge number of testcases have been added to the testsuite * the handling of cast instructions has been completely revamped * the SSA conversion has been is now corrected and has been rewritten with a variant of the classical algorithm * documentation is now handled with Sphinx and inline doc is extracted from the code. * online documentation can be found at https://sparse-doc.readthedocs.io/en/master/ A more complete list of changes is: * add predefined macros for __INTMAX_TYPE__, __INT_MAX__, ... * prepare to identify & display the address spaces by name * fix linearization of non-constant switch-cases * manpage: update maintainer info * manpage: add AUTHORS section * fixes for -dD * add support for -dM * remove more complex phi-nodes * fix linearization/SSA when missing a return * fix linearization/SSA of (nested) logical expressions * fix linearization of unreachable switch + label * add support for __has_attribute() * consolidate instruction's properties into an opcode table * fix: do not optimize away accesses to volatile bitfields * support mode(__pointer__) and mode(__byte__) * do 'classical' SSA conversion (via the iterated dominance frontier). * fix buggy recursion in kill_dead_stores() * kill dead stores again after memops simplification is done. * simplify TRUNC((x & M') | y, N) * simplify AND(SHIFT(a | b, S), M) * simplify TRUNC(SHIFT(a | b, S), N) * add simplification of TRUNC(TRUNC((x)) * add simplification of SHL(LSR(x), S), S) * generate integer-wide OP_ADD & OP_SUB in linearize_inc_dec() * simplify mask instructions & bitfield accesses * fix a few bugs related to the linearization of logical expressions * simplify those logical expressions. * add optimized version of some list operations * some simplifications of OP_SETNE & OP_SETEQ with 0 and 1 * several simplifications involving casts and/or bitfields * give a correct & sensible warning on negative or over-sized shifts. * add conservative simplification of such shifts. * do not optimize the meaningless shift: * any shift with a negative count * OP_ASRs with an over-sized shift count. * try to give a correct negative/too-big error message during simplification. * simplify chains of shifts. * simplify ZEXT + ASR into ZEXT + LSR * cse: try the next pair instead of keeping the first instruction * cse: compare casts only by kind a size, not by C type. * optimize away OP_UTPTR & OP_PTRTU which are nops. * cleanup of list walking macros: * make untagged pointers the normal case * use structurally equivalent struct for all pointer lists to avoid needless casting to and fro struct ptrlist * simplify PREPARE/NEXT/RESET logic by using common PTR_NEXT() * add validation of the IR. * improve expansion of builtin dynamic macros (__FILE__, ...) * add support for __INCLUDE_LEVEL__ & __BASE_FILE__ * mprove generation of predefined macros * add support for builtins doing overflow checking. * add support for the __has_builtin() macro. * improve Sphinx doc for IR instructions * have those instructions in the index * have a nicer presentation of the generated doc thanks to not having to use level-4 headings anymore * fixes & improvements to the testsuite; mainly: - allow to run the testsuite on all the tests of a subdir - teach 'format' to directly append to the testcase - validate the 'check-...' tags -- Luc Van Oostenryck