How are structures and multi-dimensional arrays supported in implemented analysis types? Is the analysis element- and field-aware?
The value analysis is element-aware and field-aware (of course for arrays this makes a difference only when the expression used as an index can be evaluated with enough precision. There are a number of settings to improve precision at the cost of more time and memory use). In fact, casts between pointers to different structs, and casts between pointers to structs and pointers to arrays, are handled with precision too.