aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2020-09-25 14:31:46 -0400
committerDavid Malcolm <dmalcolm@redhat.com>2020-09-25 21:34:20 -0400
commitd4a906e7b51f3fc31f3328810f45ae4cf2e7bbc3 (patch)
treeee18fdc7c66f4554af86a84e5a5a63e173d37c8a
parent29f5db8ef81fac4db8e66e5f06fdf1d469e8161c (diff)
downloadgcc-d4a906e7b51f3fc31f3328810f45ae4cf2e7bbc3.zip
gcc-d4a906e7b51f3fc31f3328810f45ae4cf2e7bbc3.tar.gz
gcc-d4a906e7b51f3fc31f3328810f45ae4cf2e7bbc3.tar.bz2
analyzer: add test for placement new
gcc/testsuite/ChangeLog: PR analyzer/94355 * g++.dg/analyzer/placement-new.C: New test.
-rw-r--r--gcc/testsuite/g++.dg/analyzer/placement-new.C26
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/analyzer/placement-new.C b/gcc/testsuite/g++.dg/analyzer/placement-new.C
new file mode 100644
index 0000000..8250f45
--- /dev/null
+++ b/gcc/testsuite/g++.dg/analyzer/placement-new.C
@@ -0,0 +1,26 @@
+#include <new>
+
+/* Placement new. */
+
+void test_1 (void)
+{
+ char buf[sizeof(int)];
+ int *p = new(buf) int (42);
+}
+
+/* Placement new[]. */
+
+void test_2 (void)
+{
+ char buf[sizeof(int) * 10];
+ int *p = new(buf) int[10];
+}
+
+/* Delete of placement new. */
+
+void test_3 (void)
+{
+ char buf[sizeof(int)];
+ int *p = new(buf) int (42);
+ delete p; // { dg-warning "memory not on the heap" }
+}