https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98797
--- Comment #1 from Brian Sobulefsky <brian.sobulefsky at protonmail dot com>
---
I have updated the repository I linked previously so that it has current gcc
sources and also includes a solution for the case where struct s2 is not a
single field, that is, we have something like:
struct s1
{
char a;
char b;
char c;
char d;
};
struct s2
{
char arr1[2];
char arr1[2];
};
struct s2 x = {{'A', 'B'}, {'C', 'D'}};
struct s1 *p = (struct s1 *)&x;
__analyzer_eval (p->a == 'A');
The solution I submitted basically has the logic right, but I put everything
into binding_cluster:get_binding_recursive instead of creating a new method for
class binding_cluster, which is the right way to do it. I did this just to have
a quick outline of the solution without altering the class members, but in my
view get_binding_recursive is too cluttered this way and the code in the case I
added should be moved to a new function.