extra: store values for expressions like "foo[3].bar"
Before we used to store values for array elements like:
foo[3] = x;
But we didn't for:
foo[3].bar = y;
The reason is that foo[3].bar isn't an array so is_array() returned false,
but it does contain an array so the normal code wouldn't store it either.
I've added a work-around. It's not ideal...
Also I had to change smatch_flow.c because it wasn't using the right
functions to see if there was an extra state. The original smatch_flow
code couldn't handle chunk values.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>