From 6b31b6b52612a6d4a7a84e71f6331464d68400d4 Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Thu, 20 Aug 2020 17:50:14 -0400 Subject: [PATCH] analyzer: add regression tests [PR95152] PR analyzer/95152 reports various ICEs in region_model::get_or_create_mem_ref. I removed this function as part of the state rewrite in r11-2694-g808f4dfeb3a95f50f15e71148e5c1067f90a126d. I've verified that these two test cases reproduce the issue with 10.2 and don't ICE with trunk; adding them as regression tests. gcc/testsuite/ChangeLog: PR analyzer/95152 * gcc.dg/analyzer/pr95152-4.c: New test. * gcc.dg/analyzer/pr95152-5.c: New test. --- gcc/testsuite/gcc.dg/analyzer/pr95152-4.c | 11 +++++++++++ gcc/testsuite/gcc.dg/analyzer/pr95152-5.c | 6 ++++++ 2 files changed, 17 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/analyzer/pr95152-4.c create mode 100644 gcc/testsuite/gcc.dg/analyzer/pr95152-5.c diff --git a/gcc/testsuite/gcc.dg/analyzer/pr95152-4.c b/gcc/testsuite/gcc.dg/analyzer/pr95152-4.c new file mode 100644 index 0000000..f2a72ca --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/pr95152-4.c @@ -0,0 +1,11 @@ +/* { dg-additional-options "-Wno-pointer-to-int-cast" } */ +extern void my_func (int); +typedef struct { + int var; +} info_t; +extern void *_data_offs; +void test() +{ + info_t *info = ((void *)((void *)1) + ((unsigned int)&_data_offs)); + my_func(info->var == 0); +} diff --git a/gcc/testsuite/gcc.dg/analyzer/pr95152-5.c b/gcc/testsuite/gcc.dg/analyzer/pr95152-5.c new file mode 100644 index 0000000..604b784 --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/pr95152-5.c @@ -0,0 +1,6 @@ +/* { dg-additional-options "-Wno-incompatible-pointer-types" } */ +void foo(void) +{ + void (*a[1]) (); + void (*p) () = a + 1; +} -- 2.7.4