diff options
Diffstat (limited to 'Documentation/release-notes/v0.5.1.rst')
| -rw-r--r-- | Documentation/release-notes/v0.5.1.rst | 422 |
1 files changed, 422 insertions, 0 deletions
diff --git a/Documentation/release-notes/v0.5.1.rst b/Documentation/release-notes/v0.5.1.rst new file mode 100644 index 00000000..7853bcf2 --- /dev/null +++ b/Documentation/release-notes/v0.5.1.rst @@ -0,0 +1,422 @@ +v0.5.1 (2017-08-18) +=================== + +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 Van Oostenryck 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?h=v0.5.1 + +Thanks + +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 |
