From 4e8c3ff8cad2efc5849b04d4a3f62187b77e2874 Mon Sep 17 00:00:00 2001 From: tromey Date: Tue, 22 Jan 2008 17:54:59 +0000 Subject: [PATCH] gcc/testsuite PR c++/34829: * g++.dg/ext/pr34829.C: New file. gcc/cp PR c++/34829: * init.c (build_new_1): Only disallow Java aggregates. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131732 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/init.c | 4 ++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/ext/pr34829.C | 20 ++++++++++++++++++++ 4 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/ext/pr34829.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index eab41cfd03c..235f7cb4b25 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2008-01-22 Tom Tromey + + PR c++/34829: + * init.c (build_new_1): Only disallow Java aggregates. + 2008-01-22 Jakub Jelinek PR c++/34607 diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 202f3b68ebb..a6da19f1933 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -1,6 +1,6 @@ /* Handle initialization things in C++. Copyright (C) 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) @@ -1786,7 +1786,7 @@ build_new_1 (tree placement, tree type, tree nelts, tree init, (alloc_fn, build_tree_list (NULL_TREE, class_addr))); } - else if (TYPE_FOR_JAVA (elt_type)) + else if (TYPE_FOR_JAVA (elt_type) && IS_AGGR_TYPE (elt_type)) { error ("Java class %q#T object allocated using placement new", elt_type); return error_mark_node; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ab1f6b8a02d..ffb8e1caa59 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-01-22 Tom Tromey + + PR c++/34829: + * g++.dg/ext/pr34829.C: New file. + 2008-01-22 Jakub Jelinek PR c++/34607 diff --git a/gcc/testsuite/g++.dg/ext/pr34829.C b/gcc/testsuite/g++.dg/ext/pr34829.C new file mode 100644 index 00000000000..ea4b3959195 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/pr34829.C @@ -0,0 +1,20 @@ +// Test for PR c++/34829 +// Placement new should be ok for non-aggregate Java types. + +// { dg-do compile } +// { dg-options "" } + +extern "Java" +{ + typedef __java_byte jbyte; +} + +void *operator new (unsigned int s, void *m) +{ + return m; +} + +jbyte *f(void *memory) +{ + return new (memory) jbyte; +} -- 2.11.0