diff options
author | David Malcolm <dmalcolm@redhat.com> | 2020-03-10 18:50:03 -0400 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2020-03-18 09:59:17 -0400 |
commit | f665beeba625490bd96a593d23e00726d969cf98 (patch) | |
tree | bf629692dbd6ac5a9feb81faf5bfbb8b9cee4689 | |
parent | 7d9c107ab1eab331e7011513b11e26b78850d614 (diff) | |
download | gcc-f665beeba625490bd96a593d23e00726d969cf98.zip gcc-f665beeba625490bd96a593d23e00726d969cf98.tar.gz gcc-f665beeba625490bd96a593d23e00726d969cf98.tar.bz2 |
analyzer: add test coverage for fixed ICE [PR94047]
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.
gcc/testsuite/ChangeLog:
PR analyzer/94047
* gcc.dg/analyzer/pr94047.c: New test.
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/analyzer/pr94047.c | 23 |
2 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4aa798f..a91d737 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-03-18 David Malcolm <dmalcolm@redhat.com> + + PR analyzer/94047 + * gcc.dg/analyzer/pr94047.c: New test. + 2020-03-18 Richard Biener <rguenther@suse.de> PR middle-end/94206 diff --git a/gcc/testsuite/gcc.dg/analyzer/pr94047.c b/gcc/testsuite/gcc.dg/analyzer/pr94047.c new file mode 100644 index 0000000..d989a25 --- /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); +} |