diff options
author | David Malcolm <dmalcolm@redhat.com> | 2020-03-04 12:10:34 -0500 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2020-03-04 16:55:20 -0500 |
commit | 4ac3eb5c5f157bea22b5ae34b0df254d729dac25 (patch) | |
tree | afb92e7b3b98a556b5b98a8c21270c7c55aa2d39 | |
parent | 3ca63e1c76b7693b5d3f5ba2567421defc764249 (diff) |
analyzer: add regression test for fixed ICE [PR94028]
The C++ reproducer for PR analyzer/94028 generates a similar ICE
to that of the Fortran reproducer for PR analyzer/93993 and, like
it, was fixed by r10-7023-g3d66e153b40ed000af30a9e569a05f34d5d576aa.
This patch adds the C++ reproducer as a regression test.
gcc/testsuite/ChangeLog:
PR analyzer/94028
* g++.dg/analyzer/pr94028.C: New test.
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/analyzer/pr94028.C | 36 |
2 files changed, 41 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b28eb52f8a5..9fcec5abc9e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-03-04 David Malcolm <dmalcolm@redhat.com> + + PR analyzer/94028 + * g++.dg/analyzer/pr94028.C: New test. + 2020-03-04 Martin Sebor <msebor@redhat.com> PR middle-end/81401 diff --git a/gcc/testsuite/g++.dg/analyzer/pr94028.C b/gcc/testsuite/g++.dg/analyzer/pr94028.C new file mode 100644 index 00000000000..0a222d1b991 --- /dev/null +++ b/gcc/testsuite/g++.dg/analyzer/pr94028.C @@ -0,0 +1,36 @@ +void *calloc (__SIZE_TYPE__, __SIZE_TYPE__); + +struct B +{ + B (short); + int cls; +} k (0); + +void d (int); + +enum e {} i; + +struct j +{ + void *operator new (__SIZE_TYPE__ b) + { + return calloc (b, sizeof (int)); // { dg-warning "leak" } + } + j (B *, int) + { + } // { dg-warning "leak" } +}; + +j * +f (B * b, int h, bool) +{ + d (b->cls); + return new j (b, h); // { dg-warning "leak" } +} + +void +m () +{ + if (i) + f (&k, 0, false); +} |