diff --git a/clang/test/Analysis/array-struct.c b/clang/test/Analysis/array-struct.c index 86858d7bd2c7..60a3d3118d73 100644 --- a/clang/test/Analysis/array-struct.c +++ b/clang/test/Analysis/array-struct.c @@ -104,3 +104,18 @@ void f12(int *list) { unsigned i = 0; list[i] = 1; } + +struct s1 { + struct s2 { + int d; + } e; +}; + +// The binding of a.e.d should not be removed. Test recursive subregion map +// building: a->e, e->d. Only then 'a' could be added to live region roots. +void f13(double timeout) { + struct s1 a; + a.e.d = (long) timeout; + if (a.e.d == 10) + a.e.d = 4; +}