PR analyzer/94047 reports an ICE, which turned out to be caused by the erroneous use of TREE_TYPE on the view region's type in region_model::get_representative_path_var that I introduced in r10-7024-ge516294a1acb28aaaad44cfd583cc6a80354044e and fixed in g:787477a226033e36be3f6d16b71be13dd917e982.
This patch adds a regression test for the ICE. Successfully regrtested on x86_64-pc-linux-gnu. Pushed to master as f665beeba625490bd96a593d23e00726d969cf98. gcc/testsuite/ChangeLog: PR analyzer/94047 * gcc.dg/analyzer/pr94047.c: New test. --- gcc/testsuite/gcc.dg/analyzer/pr94047.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/analyzer/pr94047.c diff --git a/gcc/testsuite/gcc.dg/analyzer/pr94047.c b/gcc/testsuite/gcc.dg/analyzer/pr94047.c new file mode 100644 index 00000000000..d989a254c9e --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/pr94047.c @@ -0,0 +1,23 @@ +/* { dg-additional-options "-Wno-analyzer-too-complex" } */ +/* TODO: the above ought not to be necessary, but currently is due to a + state explosion within the for loop. */ + +typedef struct list +{ + struct list *next; +} tlist; + +void +bar (struct list *l) +{ + l->next = l->next->next; +} + +void +foo (void) +{ + struct list l; + tlist t = l; + for (;;) + bar (&t); +} -- 2.21.0