From: tromey Date: Tue, 22 Jan 2008 17:54:59 +0000 (+0000) Subject: gcc/testsuite X-Git-Tag: upstream/4.9.2~44040 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4e8c3ff8cad2efc5849b04d4a3f62187b77e2874;p=platform%2Fupstream%2Flinaro-gcc.git 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 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index eab41cf..235f7cb 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 202f3b6..a6da19f 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 ab1f6b8..ffb8e1c 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 0000000..ea4b395 --- /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; +}