Sparse/ news/ Sparse 0.4 released

I have tagged and tarballed Sparse 0.4, now available from http://kernel.org/pub/software/devel/sparse/dist/sparse-0.4.tar.gz, with sha1sum a77a10174c8cdb5314eb5000c1e4f24458848b91.

Highlights and visible changes in this release:

Full changelog:

Al Viro (51):
      handle __alignof as equivalent of __alignof__
      saner reporting of overlaps in initializers
      check for whitespace before object-like macro body
      fix alignment for _Bool
      fix interaction of typeof with bitwise types
      better recovery from bad operations on bitwise
      make copying of EXPR_INDEX non-lazy
      tie the fields of struct in simple list
      rewrite of initializer handling
      fix handling of typeof on structs
      missing NULL checks in initializer handling
      take cast_to() out of usual_conversions(), do it in callers
      mechanically split compatible_assignment_types()
      null pointer constants have no special meaning for pointer subtraction
      remove long-dead variable in evaluate_ptr_add()
      remove useless argument in evaluate_ptr_sub()
      cleanup of evaluate_assign_op()
      clean up the typechecking in arithmetics
      clean up usual_conversions(), kill evaluate_shift()
      fix index conversions in evaluate_ptr_add()
      fix default argument promotion
      move degenerate() down into compatible_assignment_types()
      in case of compound literal we want to delay examining type
      warn on return <void expression>;
      deal with enum members without excessive PITA
      implement __builtin_offsetof()
      fix handling of integer constant expressions
      fix the comma handling in integer constant expressions
      first pass at null pointer constants
      make size_t better approximate the reality
      fix handling of address_space in casts and assignments
      fix handling of pointers in ?:
      saner show_type()
      clean up evaluate_sign()
      integer_promotions() can't get SYM_NODE or SYM_ENUM
      start cleaning type_difference()
      get compatible_assignment_types() deal with all cases
      fix the sanity check in evaluate_ptr_sub()
      rewrite type_difference()
      deal correctly with qualifiers on arrays
      add __builtin_strlen()
      no such thing as array of functions
      new helper: unfoul()
      handling of typeof in evaluate_member_dereference()
      file and global scopes are the same for purposes of struct redefining
      ...,array should degenerate
      sanitize evaluate_ptr_add(), start checking for pointers to functions
      fix evaluate_compare()
      sanitize evaluate_postop()
      saner -Wtypesign
      braino in conditional_expression()

Alberto Bertogli (1):
      Implement x86-64 support in cgcc.

Alexey Dobriyan (2):
      Fix infinite loop in free_preprocessor_line()
      Fix -E handling

Christopher Li (2):
      combinations string clean up
      Pass a bitmask of keywords to handle_attributes

Damien Lespiau (6):
      Change sparse homepage in ctags headers.
      __DATE__ & __TIME expansion
      Beautify all & install Makefile targets
      test-suite: a tiny test automation script
      test-suite documentation
      Sample test-suite test cases

Dan Sheridan (2):
      Improved graph generation using subgraph clusters for functions
      Add gvpr-based post-processing for graphs

Josh Triplett (118):
      Fix website and repository references in FAQ
      Fix the version number
      Remove old version note.
      gitweb lives at git.kernel.org now.
      Add a "make dist" that requires $(VERSION) to match `git describe`
      Add test case for __asm__ __volatile__(...)
      Make cgcc not pass -Wall to sparse even if passing it to cc
      Teach cgcc about all currently existing sparse warning options
      Teach cgcc about -ventry and -vdead
      Parse asm after a label as a statement, not an attribute
      Add test case for stdcall and cdecl attributes.
      Add -Wno-old-initializer to turn off warnings about non-C99 struct initializers
      Add test case for -Wno-old-initializer
      Revert unintentional inclusion of warning fix in previous commit.
      Use %td when printing a ptrdiff_t to avoid problems on 64-bit platforms
      Remove extra space.
      Add shebang to gvpr scripts, make them executable, and change usage accordingly
      Fix an __attribute__() parsing error
      Expand calling convention test case to cover fastcall
      Add -Wno-non-pointer-null to turn off warning about using a plain integer as a NULL pointer
      Add __builtin_strcat and __builtin_strncat.
      Ignore the GCC constructor and destructor attributes
      Remove inaccurate comment designating some attributes as windows-specific.
      Move the ident for defined() into the preprocessor section.
      Reorganize attribute list for readability.
      Add double-underscore variant __always_inline__.
      Add double-underscore variant __noinline__.
      Add no-double-underscore variant "used", ignored like "__used__".
      Add double-underscore variant __syscall_linkage__.
      Add no-double-underscore variant format_arg.
      Add explanatory comment about direct use of __IDENT for preprocessor idents.
      Sparse always defines __STDC__ 1, so cgcc does not need to do so
      Fix old typo: s/wierd/weird/
      Canonicalize URL in FAQ: add www., add trailing slash
      Change "LD" to "LINK" in Makefile prettyprinting.
      Makefile prettyprinting: make INSTALL and other output line up correctly
      Add test case for infinite loop in free_preprocessor_line()
      Turn on -Wdecl by default.
      ctags: Use const as appropriate in cmp_sym()
      validation/old-initializer.c: Make the_s static to avoid extraneous warning.
      validation/restricted-typeof.c: Make globals static to avoid extraneous warnings.
      validation/escapes.c: Make globals static to avoid extraneous warnings.
      validation/non-pointer-null.c: Make global static to avoid extraneous warning.
      Merge commit 'viro/integer-constant'
      Move all the preprocessor tests into validation/preprocessor/
      Move test-suite output files to validation/.gitignore
      .gitignore: Stop ignoring all dotfiles
      validation: Update comments for current Sparse behavior and test-suite.
      Add test-suite comments to all the obvious preprocessor tests
      Make preprocessor-loop a normal numbered preprocessor test
      Add test-suite comment to preprocessor21.
      Add test-suite comment to address_space.c
      Make clean depend on clean-check
      Rename asm-volatile to better describe what it tests
      Add test-suite comment to label-asm.c
      Remove "check-exit-value: 0" and rely on default; remove extra blank line.
      Add test-suite comment to bad-array-designated-initializer.c
      Add c2xml to .gitignore
      Split c2xml build rule into compile and link stages, and add the quiet prefixes
      expression.h needs lib.h for struct position and symbol.h for int_ctype
      Fix GCC warnings in c2xml
      Fix sparse warnings in c2xml: mark globals static and remove unused globals
      Fix test-suite to handle stdout and stderr separately, and fix up tests
      Add test-suite metadata to bad-cast.c
      Add test-suite metadata to bad-ternary-cond.c, and remove now-redundant comment
      Add test-suite metadata to initializer-entry-defined-twice.c
      Add test-suite metadata to context.c
      Add test-suite metadata to escapes.c
      Add test-suite metadata to calling-convention-attributes.c
      Fix typos in test-suite documentation
      Makefile: stop cleaning files we didn't make and have no business cleaning
      Add test-suite metadata to old-initializer.c; also test with -Wno-initializer
      allocate.h: Stop needlessly returning a void value in __DO_ALLOCATOR
      Turn off -Wdo-while by default.
      Add test-suite metadata to label-attr.c
      validation/builtin_safe1.c: Show the unsafe macro argument
      Make "Initializer entry defined twice" a warning, not an error
      Remove explicit restatements of defaults in metadata for member_of_typeof test
      Remove explicit restatements of defaults in metadata for outer-scope test
      Remove explicit restatements of defaults in metadata for comma test
      Add test case for comparing null pointer constant to int.
      Makefile: Use -O2 -finline-functions, not just -O
      cse: Size insn_hash_table more realistically, speeding up CSE significantly
      Add some missing dependencies in the Makefile
      Drop -fpic; it hurts performance and we don't build libsparse.so by default
      Add another test case to validation/comma.c
      ctags: Handle some new namespaces and symbol types.
      is_zero_constant: declare saved const
      Add test case for -Wtypesign
      Sort warning options in lib.c and lib.h
      Rename Wcast_to_address_space to Wcast_to_as to match the command-line argument
      Add a manpage for sparse
      Install the Sparse manpage
      cgcc: Sparse accepts -Wcast-to-as, not -Wcast-to-address-space
      Rename Wundefined_preprocessor to Wundef to match the command-line argument
      cgcc: Sparse accepts -Wundef, not -Wundefined-preprocessor
      Use -fno-strict-aliasing, as the ptrlist code seems to violate C99 strict aliasing rules
      Add test-suite annotations to restricted-typeof.c
      Add test-suite annotations to double-semicolon.c
      Add test-suite annotations to check_byte_count-ice.c
      Add test-suite annotations to badtype4.c
      Add test-suite annotations to varargs1.c
      Add test-suite annotations to struct-attribute-placement.c
      Add test-suite annotations to non-pointer-null.c
      Add test-suite annotations to struct-ns1.c
      Add test-suite annotations to noderef.c
      Makefile: Use ?= to allow overriding OS or AR on the Make command line
      FAQ: Point to URL on vger for subscription instructions and archives
      README: recode from ISO-8859-1 to UTF-8
      validation: Rename typeconvert.c to integer-promotions.c to match its purpose
      Add test-suite annotations to integer-promotions.c
      Add test-suite annotations to cond_expr.c
      Add test-suite annotations to function-pointer-modifier-inheritance.c
      validation: Update comment in type1.c to reflect current state of Sparse
      Add test-suite annotations to init-char-array.c
      Add a manpage for cgcc
      Add SEE ALSO for cgcc in sparse manpage
      Makefile: VERSION=0.4

Kovarththanan Rajaratnam (1):
      libxml compile fix on Cygwin

Michael Stefaniuc (3):
      Ignore the cdecl and stdcall attributes for now.
      Add test for typedef on pointer to function with stdcall attribute.
      '\?' is a valid escape character defined by ANSI C. Its value is '?'.

Mike Frysinger (1):
      Makefile: improve flag handling

Pavel Roskin (5):
      Improve error message if using a member of an incomplete struct or union
      Bitfield without explicit sign should be a warning, not an error
      cgcc: preserve sparse exit code if -no-compile is used
      Avoid use of libc headers in the validation suite
      Fix warnings about undeclared globals, they are irrelevant to the test

Ramsay Jones (2):
      Add (more) support for WIN32 attribute names
      Add cygwin support to cgcc

Randy Dunlap (1):
      add __builtin_labs()

Rob Taylor (4):
      add end position to symbols
      add sparse_keep_tokens api to lib.h
      new get_type_name function
      add c2xml program

Yura Pakhuchiy (1):
      Make cgcc filter out all sparse warning related options

ricknu-0@student.ltu.se (4):
      tokenize.c: Replace handwritten strncmp with existing function.
      expression.c: Clean up match_oplist() and add missing va_end()
      parse.c: Adding va_end().
      tokenize.c: Simplify drop_stream_eoln().

-- Josh Triplett