summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/init/placement3.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.dg/init/placement3.C')
-rw-r--r--gcc/testsuite/g++.dg/init/placement3.C30
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/init/placement3.C b/gcc/testsuite/g++.dg/init/placement3.C
new file mode 100644
index 000000000..919e2a816
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/placement3.C
@@ -0,0 +1,30 @@
+typedef __SIZE_TYPE__ size_t;
+extern "C" void *malloc (size_t);
+
+int i;
+
+struct S {
+ S(int) {
+ throw 3;
+ }
+
+ void *operator new(size_t s, int) {
+ ++i;
+ return malloc (s);
+ }
+
+ void operator delete(void *, int) {
+ --i;
+ }
+
+ void operator delete(void *, int, int) ;
+};
+
+int main () {
+ try {
+ new (7) S (12);
+ } catch (int) {
+ if (i)
+ return 1;
+ }
+}