c-attribs.c: Fix warning about use of uninitialized variable nunits
authorStefan Schulze Frielinghaus <stefansf@linux.ibm.com>
Sun, 26 Apr 2020 07:42:29 +0000 (09:42 +0200)
committerStefan Schulze Frielinghaus <stefansf@linux.ibm.com>
Tue, 5 May 2020 15:33:54 +0000 (17:33 +0200)
commitb776bdca9322977cbb8aced2fe24ecd317a6f16b
tree0ca1fc14a18702374de4aeb9f6fb4cf4a890afbe
parent733195e367d84914cf9a35c5c78901c973f4159a
c-attribs.c: Fix warning about use of uninitialized variable nunits

In function handle_vector_size_attribute local variable nunits is
supposed to be initialized by function type_valid_for_vector_size.
However, in case ARGS is null the function may return with a non-null
value and leave nunits uninitialized.  This results in warning/error:

gcc/poly-int.h: In function 'tree_node* handle_vector_size_attribute(tree_node**, tree, tree, int, bool*)':
gcc/poly-int.h:330:3: error: 'nunits' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  330 |   ((void) (&(RES).coeffs[0] == (C *) 0), \
      |   ^
gcc/c-family/c-attribs.c:3695:26: note: 'nunits' was declared here
 3695 |   unsigned HOST_WIDE_INT nunits;
      |

Added attribute nonnull for argument args in order to silence warning
and added an assert statement in order to check the invariant candidate.

gcc/c-family/ChangeLog:

2020-05-05  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>

* c-attribs.c (handle_vector_size_attribute): Add attribute
nonnull for argument args in order to silence warning of
uninitialized variable usage.  Since this is local to the
compilation unit and thus cannot be checked at call sides by the
compiler, added an assert statement in order to verify this.
gcc/c-family/ChangeLog
gcc/c-family/c-attribs.c