On Fri, Aug 18, 2017 at 3:46 PM, Christopher Li <sparse@xxxxxxxxxxx> wrote: > It is finally there. Sparse 0.5.1 is released. > > I consider this the best quality of release of sparse I ever > experienced so far. There are lots of enhancement and bug fixes > incorporate into this release. > > I would like to thank every one that contributes to this release, > people who submit patches, perform testing and send bug > reports. > > I want to specially thank Luc Vanoostenryck who makes this > release possible. He has 242 commits in this release, far more > than any one else. > > The development effort for the next release has already began. > > Finally, I would like to call for developers joining the sparse project. > If you are interested in modern compilers, reading compiler books > and want some excise. Sparse is a good project to start. > > Sparse is very small, the project compiles under 10 seconds. > It can digest the full kernel source file, generate internal byte > code representation and perform check on it. All this happens in > 1/10 of the time it took gcc to compile the same source file. > > Here is some project ideas, > https://git.kernel.org/pub/scm/devel/sparse/sparse.git/tree/Documentation/project-ideas.md > I forget to include the usual short log of the release in my last email. Here it is. Chris Aaro Koskinen (1): build: allow use of PKG_CONFIG to override pkg-config Andy Shevchenko (1): lib.c: skip --param parameters Ard Biesheuvel (2): sparse: treat function pointers as pointers to const data Ignore pure attribute in assignement Azat Khuzhin (2): sparse, llvm: compile: skip function prototypes to avoid SIGSEGV validation/prototype: regression for skipping prototypes Christian Borntraeger (1): s390x: add the proper defines for data types Christopher Li (24): Minor clean up for option handling round up the array element size to byte align Make same_symbol list share the same scope rename -Werror to -Wsparse-error teach next_designators() use array_element_offset() Ptr list sorting should use memmove instead of memcpy Make macro expanded string immutable Fix warning compiling sparse-llvm Adding ignored attribute optimize Let create_symbol check for previous same symbol Add full list of gcc attribute bump sparse's version to 0.5.1-rc4 Adding gcc attribute no_gccisr Add test case for the wine dead loop bug Makefile: clean up and simplify Makefile: add selfcheck target Adding _Pragma() fix warnings report by selfcheck Adding gcc attribute noipa etc Adding document for sparse patch submit process Documents: project ideas test-inspect: handle special case iter==NULL test-inspect: Detect gtk3 then gtk2 package Sparse 0.5.1 Cody P Schafer (3): build: allow use of LLVM_CONFIG to override llvm-config config script sparse{i,c}: use LLVM_CONFIG to find llc and lli parse: support c99 [static ...] in abstract array declarators Dan Carpenter (1): ptrlist: reading deleted items in NEXT_PTR_LIST() Daniel Wagner (1): parse: Add comment to struct statement Edward Cree (1): Allow casting to a restricted type if !restricted_value Emilio G. Cota (1): Define __CHAR_BIT__ Emily Maier (2): linearize: Emit C99 declarations correctly validation: Check C99 for loop variables Hans Verkuil (3): Add test case for extern array Add test case for anonymous union initializer Add test case for the ioc type check Heiko Carstens (1): sparse/parse.c: ignore hotpatch attribute Jeff Layton (2): sparse: make bits_to_bytes round up instead of down Handle SForced in storage_modifiers Joe Perches (1): sparse: Allow override of sizeof(bool) warning Johannes Berg (1): implement constant-folding in __builtin_bswap*() John Keeping (3): validation/sizeof-bool: fix broken test case evaluate: split out implementation of compatible_assignment_types Support GCC's transparent unions Lance Richardson (3): sparse: ignore __assume_aligned__ attribute sparse: update __builtin_object_size() prototype sparse: add support for _Static_assert Linus Torvalds (5): Add warning about duplicate initializers Use any previous initializer to size a symbol Fix error at anoymous unions Fix scoping of extern symbols in block scope Fix initializers in anonymous structs and unions Luc Van Oostenryck (242): Teach sparse about the __COUNTER__ predefined macro Fix size calculation of unsized bool array Do not drop 'nocast' modifier when taking the address. fix mixup in "Handle SForced in storage_modifiers" Fix type checking of variadic functions add missing #include "char.h" to char.c make 'ignored_attributes[]' static cleanup: remove evaluate_arguments()'s unused argument Warn on unknown attributes instead of throwing errors Remove unneeded variable in integer_promotion() fix discarded label statement add test case for builtin bswap with constant args make ptrlist walking against robust against empty blocks let "compile" not crash on bools give comparable label's names to basic blocks OP_SWITCH should use 'insn->cond' instead of 'insn->target' remove unused field 'multijump' in struct instruction storage should not be inherited by pointers testsuite: simplify test function-pointer-inheritance use a shorter name for function-pointer-modifier-inheritance.c testsuite: test modifiers preserved by '&' operator testsuite: test modifiers preserved by 'typeof()' some modifiers need to be preserved by 'typeof()' Update maintainers in the manpage cgcc should not define non-reserved identifiers recursive phi_defines cannot happen fix missing element in types declaration add support for __int128 fix typing error in compound assignment llvm: fix typing when comparing to a constant llvm: remove unneeded OP_COPY support fix cast to bool unssa: do not try to update liveness unssa: simplify rewrite of OP_PHISOURCE unssa: try to avoid some OP_PHI copies unssa: eliminate trivial phisrc copies unssa: update comment about the unneeded copies volatile loads must not be simplified fix superfluous phisrc fix phisrc mixup missing load simplification fix value of label statement C11: teach sparse about '_Thread_local' C11: teach sparse about '_Noreturn' C11: teach sparse about '_Alignof()' C11: teach sparse about '_Alignas()' C11: teach sparse about '--std={c11,gnu11}' fix cast's target type info fix crash while testing between conditional & unconditional OP_BR kill uses of replaced instructions fix killing OP_PHI instructions fix killing OP_CAST & friends fix killing OP_SELECT fix killing OP_COMPUTEDGOTO explicitely ignore killing OP_ENTRY cleanup kill_instruction() fix conditional context test case with void add helper: is_scalar_type() validate expression's type in conditionals remove unused arg in uses/defs functions add testcase for wrong early escape conversion warn on unknown escapes after preprocessing remove 'Escape' from token character class fix killing OP_SETVAL instructions define __LP64__ & _LP64 if arch_m64 is enabled add an helper for common predefined macros define __LONG_MAX__ & __SIZEOF_POINTER__ move OP_MUL simplification in a separate function simplify '(x / 1)' to 'x' simplify '(x * -1)' to '-x' simplify '(x / -1)' to '-x' (but only for signed division) simplify '(x % 1)' into '0' simplify '~(~x)' and '-(-x)' to 'x' simplify '(x || 1)' to '1' simplify '(x op x)' to '0', '1' or 'x' add warning option '-Wtautological-compare' simplify comparisons followed by an equality test against 0 or 1 simplify '(x || x)' and '(x && x)' add support for LLP64 arch move evaluation & expansion of builtins in a separate file let identical symbols share their evaluate/expand methods expand __builtin_bswap*() with constant args testsuite: give a proper name to the 'binary-constant' test testsuite: make tests known to fail effectively fail testsuite: simplify the ioc-typecheck case testsuite: add a simple test for -Wenum-mismatch testsuite: add tag to ignore the output/error testsuite: report as error tests known to fail but which succeed allow to launch the test suite from the project root dir testsuite: check patterns presence or absence in output testsuite: add some selfchecking testsuite: check the nbr of times a pattern should be present testsuite: use 'error' instead of 'info' for successful tests known to fail testsuite: get 'check-known-to-fail' earlier testsuite: allow quieter error reporting testsuite: quieter error reporting for 'known-to-fail' cleanup: there is no 'struct phi' to allocate remove unused field 'multijmp' in struct statement remove unused field 'goto_bb' in struct statement fix show-parse()'s labels add killing of OP_SLICEs add killing of OP_PHISOURCEs add helper kill_use_list() fix killing of OP_PHIs fix clear_phi(), replace it by kill_instruction() remove unused clear_phi() fix killing of otherwise not-handled instructions kill_instruction() may need to be forced or not add killing of pure calls fix killing OP_CALL via pointers add killing of non-volatile loads add killing of stores fix killing of rewritten loads use kill_instruction() when killing an OP_PHI during CSE use kill_instruction() when killing any instructions during CSE fix OP_PHI usage in try_to_simplify_bb() simplify float-to-float casts that doesn't change size CSE: add test cases for comparisons duality CSE: use commutativity to identify equivalent instructions CSE: avoid hashing removed instructions fix expansion cost of pure functions add missing braces around FOR_EACH_PTR loop make -Wbitwise operational again use option: '-Woverride-init' add test case for warnings about overlapping initializers allow to warn on all overlapping initializers fix checking of overlapping initializer ignore whole-range overlapping initializer fix usage in simplify_seteq_setne() fix size of loaded bitfields split OP_BR between unconditional & conditional: OP_CBR remove unused helper is_branch_goto() replace test for c99 for-loop initializers add test case for scope of C99 for-loop declarations add test cases for storage of c99 for-loop declarations add an optional validation method to external_declaration() check the storage of C99 for-loop initializers move 'extern with initializer' validation after the validate method use VOID instead of directly using &void_pseudo teach sparse about -Waddress add is_func_type() warn if testing the address of a function add is_array_type() warn if testing the address of an array fix evaluation of a function or array symbol in conditionals fix is_scalar_type() fix test for cast to bool on 32bit machines predefine __INT_MAX__ and friends predefine __SIZEOF_INT__ & friends fix test validation/div.c fix cast to pointer to floating-point do not depends on limits.h to test __CHAR_BIT__ fix expansion of integers to floats avoid crash with test-linearize -vv fix OP_PHI usage in try_to_simplify_bb(), correctly be more careful with concat_user_list() avoid useless warning for 'bool <- restricted type' conversion introduce REPEAT_CFG_CLEANUP let kill_unreachable_bbs() clear REPEAT_CFG_CLEANUP fix: kill unreachable BBs after killing a child ignore VOID when trying to if-convert phi-nodes fix boolean context for OP_AND_BOOL & OP_OR_BOOL fix missing reload keyword: add test case for reserved '_Static_assert' keyword: regroup the [reserved] keywords keyword: explicitly add C99 & C11 keywords keyword: add more reserved keywords to the test case keyword: add a comment about NS_TYPEDEF & reserved keywords keyword: no pre-declaration needed for attribute names add get_<allocator>_stats() add show_allocation_stats() add helper handle_simple_switch() teach sparse how to handle '-fmem-report' use -fmem-report to report allocation stats testsuite: cleanup result files fix: kill old branch in insert_branch() returns the correct type when evaluating NULL remove bit_size & bit_offset from struct access_data add test case for linearize_initializer() of bitfields fix implicit zero initializer. remove alignment from struct access_data remove origval from struct access_data add support for a new flag: -fdump-linearize[=only] more tests for implicit 'bool <- restricted' casts avoid warning on explicit 'bool <- restricted' casts define ident_list teach sparse how to dump macro definitions fix hardcoded size of wide chars avoid to redefine __INT_MAX__ and friends fix definition of __SCHAR_MAX__ & friends teach sparse how to handle -dD flag let -dD report macro definitions testsuite: get all tags in once testsuite: grep the expected output only when needed testsuite: grep the output patterns only when needed testsuite: use shell arithmetic instead of fork-execing expr testsuite: remove unneeded './' before commands testsuite: avoid fork+execing basename teach cgcc about OSX aka darwin ret-void: add test case for toplevel asm ret-void: warn for implicit type use NULL instead of 0 in testcases. finer control over error vs. warnings Add more declarations for more builtin functions keep the warnings table alphabetically sorted cgcc: alphasort warning names in check_only_option() cgcc: add missing warning names to check_only_option() cgcc: filter-out '-fdump-linearize[=...]' memcpy()'s byte count is unsigned add support for -Wmemcpy-max-count add support for -fmemcpy-max-count fix: add missing examine in evaluate_dereference() fix OP_PHI usage in try_to_simplify_bb() only when non-bogus fix: try_to_simplify_bb eargerness add fallback for missing __builtin_bswapXX() fix: __builtin_bswap{16,32,64}() constantness dissect: use built_in_ident() instead of MK_IDENT() teach sparse about -m{big,little}-endian teach sparse about __{BIG,LITTLE}_ENDIAN__ teach sparse about __BYTE_ORDER__ & __ORDER_{BIG,LITTLE}_ENDIAN__ cgcc: teach cgcc about arm64 cgcc: teach cgcc about ppc64[le] cgcc: teach cgcc about arm bump sparse's version to -rc3 fix ptrlist corruption while killing unreachable BBs fix infinite simplification loops fix BB dependencies on phi-nodes fix crash when ep->active is NULL fix crash in rewrite_branch() fix some crashes in add_dominators() fix crash with sym->bb_target == NULL take comma expr in account for constant value fix: give a type to bad cond expr with known condition ptrlist: add a counter for the number of removed elemnets ptrlist: adjust ptr_list_size for the new ->rm field ptrlist: add MARK_CURRENT_DELETED ptrlist: avoid iteration on NULL entries mark pseudo users as deleted instead of removing them testsuite: add support for commands with timeout Remove single-store shortcut Bump sparse's version to -rc5 Sparse v0.5.1 Michael Stefaniuc (3): Add the __builtin functions needed for INFINITY and nan(). Add a define for __builtin_ms_va_copy() Add tests for the builtin INF and nan() functions. Oleg Nesterov (3): dissect: teach do_expression() to handle EXPR_OFFSETOF dissect: teach do_initializer() to handle the nested EXPR_IDENTIFIER's dissect: s/mode_t/usage_t/ in report_member() Omar Sandoval (1): sparse-llvm: Fix LLVM 3.5 linker errors Pavel Roskin (1): Use LLVM_CONFIG instead of llvm-config in Makefile Ramsay Jones (15): Add the __restrict__ keyword sparse: add 'gnu_inline' to the ignored attributes don't call isdigit/tolower with a char argument Makefile: suppress error message from shell don't run sparse{c,i} tests when sparse-llvm is disabled Add support for multiarch system header files cgcc: use only the cc command to determine $gcc_base_dir cgcc: use $ccom to set $multiarch_dir if not specified test-suite: remove bashism to avoid test failures cgcc: avoid passing a sparse-only option to cc parse.c: remove duplicate 'may_alias' ignored_attributes compile-i386.c: don't ignore return value of write(2) sparse: add 'alloc_align' to the ignored attributes lib: workaround the 'redeclared with different type' errors Makefile: pass -Wno-vla to sparse while checking pre-process.c Randy Dunlap (1): documentation: update email reference link Rui Teng (1): sparse: add no_sanitize_address as an ignored attribute Thomas Graf (1): sparse: Make -Werror turn warnigns into errors Tony Camuso (2): .gitignore: add cscope and Qt project files Add default case to switches on enum variables -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html