re PR c++/33407 (C++ operator new and new expression do not change dynamic type)
authorIan Lance Taylor <iant@google.com>
Fri, 18 Jan 2008 15:25:02 +0000 (15:25 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Fri, 18 Jan 2008 15:25:02 +0000 (15:25 +0000)
commit1ea193c21f060b7e7837138122b24c9d07f57d57
treef599ef6905608f93f1d83e94f82e9ef89480d5b3
parentc27fb14bda0b2c82c0fe8413e3e2f805c1d58975
re PR c++/33407 (C++ operator new and new expression do not change dynamic type)

PR c++/33407
./: * tree.h (DECL_IS_OPERATOR_NEW): Define.
(struct tree_function_decl): Add new field operator_new_flag.
* tree-inline.c (expand_call_inline): When inlining a call to
operator new, force the return value to go into a variable, and
set DECL_NO_TBAA_P on that variable.
* c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
cp/:
* decl.c (duplicate_decls): Copy DECL_IS_OPERATOR_NEW flag.
(grok_op_properties): For NEW_EXPR and VEC_NEW_EXPR set
DECL_IS_OPERATOR_NEW flag.
testsuite/:
* g++.dg/init/new26.C: New test.

From-SVN: r131629
gcc/ChangeLog
gcc/c-decl.c
gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/init/new26.C [new file with mode: 0644]
gcc/tree-inline.c
gcc/tree.h