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

Reply via email to