From 4ac3eb5c5f157bea22b5ae34b0df254d729dac25 Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Wed, 4 Mar 2020 12:10:34 -0500 Subject: [PATCH] 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. --- gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/g++.dg/analyzer/pr94028.C | 36 +++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 gcc/testsuite/g++.dg/analyzer/pr94028.C 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 + + PR analyzer/94028 + * g++.dg/analyzer/pr94028.C: New test. + 2020-03-04 Martin Sebor 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); +} -- 2.30.2