gcc/gcc/cp
Ian Lance Taylor 058dcc25b7 re PR libstdc++/29286 (placement new does not change the dynamic type as it should)
./:	PR libstdc++/29286
	* tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
	* tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
	(CHANGE_DYNAMIC_TYPE_LOCATION): Define.
	(DECL_NO_TBAA_P): Define.
	(struct tree_decl_common): Add no_tbaa_flag field.
	* tree-ssa-structalias.c (struct variable_info): Add
	no_tbaa_pruning field.
	(new_var_info): Initialize no_tbaa_pruning field.
	(unify_nodes): Copy no_tbaa_pruning field.
	(find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
	(dump_solution_for_var): Print no_tbaa_pruning flag.
	(set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
	callers.
	(compute_tbaa_pruning): New static function.
	(compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
	Call compute_tbaa_pruning.
	* tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
	* gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
	* gimple-low.c (lower_stmt): Likewise.
	* tree-gimple.c (is_gimple_stmt): Likewise.
	* tree-ssa-operands.c (get_expr_operands): Likewise.
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
	* tree-inline.c (estimate_num_insns_1): Likewise.
	(copy_result_decl_to_var): Likewise.
	* expr.c (expand_expr_real_1): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
	* omp-low.c (omp_copy_decl_2): Likewise.
	* print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
	* doc/c-tree.texi (Expression trees): Document
	CHANGE_DYNAMIC_TYPE_EXPR.
cp/:
	PR libstdc++/29286
	* init.c (avoid_placement_new_aliasing): New static function.
	(build_new_1): Call it.
testsuite/:
	PR libstdc++/29286
	* g++.dg/init/new16.C: New test.
	* g++.dg/init/new17.C: New test.
	* g++.dg/init/new18.C: New test.
	* g++.dg/init/new19.C: New test.

Co-Authored-By: Daniel Berlin <dberlin@dberlin.org>

From-SVN: r125653
2007-06-12 17:47:37 +00:00
..
ChangeLog re PR libstdc++/29286 (placement new does not change the dynamic type as it should) 2007-06-12 17:47:37 +00:00
ChangeLog-1993
ChangeLog-1994
ChangeLog-1995
ChangeLog-1996
ChangeLog-1997
ChangeLog-1998
ChangeLog-1999
ChangeLog-2000
ChangeLog-2001
ChangeLog-2002
ChangeLog-2003
ChangeLog-2004
ChangeLog-2005 ChangeLog: split old changelogs by year 2007-05-04 00:16:02 +00:00
ChangeLog-2006 ChangeLog: split old changelogs by year 2007-05-04 00:16:02 +00:00
ChangeLog.tree-ssa
Make-lang.in
NEWS
call.c re PR c++/30759 (initializer-list accepted for object of non-POD type) 2007-06-07 19:59:33 +00:00
cfns.gperf
cfns.h
class.c class.c (convert_to_base_statically): Fold produced tree; verify that we are not processing template_decl. 2007-04-11 06:18:28 +00:00
config-lang.in
cp-gimplify.c
cp-lang.c invoke.texi (Debugging Options): Add documentation for the -femit-struct-debug options... 2007-04-17 06:19:36 +00:00
cp-objcp-common.c 2007-04-07 Daniel Berlin <dberlin@dberlin.org> 2007-04-07 23:08:23 +00:00
cp-objcp-common.h really remove signed(_or_unsigned)?_type langhooks 2007-06-11 15:40:55 +00:00
cp-tree.def re PR c++/26099 (support for type traits is not available) 2007-03-30 19:45:57 +00:00
cp-tree.h decl.c (get_atexit_fn_ptr_type): New function. 2007-06-01 00:44:36 +00:00
cvt.c invoke.texi (Warning Options): Add -Wconversion-sign. 2007-05-19 13:32:03 +00:00
cxx-pretty-print.c
cxx-pretty-print.h
decl.c re PR c++/30759 (initializer-list accepted for object of non-POD type) 2007-06-07 19:59:33 +00:00
decl.h
decl2.c decl.c (get_atexit_fn_ptr_type): New function. 2007-06-01 00:44:36 +00:00
dump.c
error.c re PR c++/30759 (initializer-list accepted for object of non-POD type) 2007-06-07 19:59:33 +00:00
except.c re PR c++/7412 ([DR 106] References to references) 2007-05-31 01:18:22 +00:00
expr.c
friend.c
g++spec.c
init.c re PR libstdc++/29286 (placement new does not change the dynamic type as it should) 2007-06-12 17:47:37 +00:00
lang-specs.h
lex.c re PR c++/30759 (initializer-list accepted for object of non-POD type) 2007-06-07 19:59:33 +00:00
mangle.c re PR c++/7412 ([DR 106] References to references) 2007-05-31 01:18:22 +00:00
method.c re PR c++/26099 (support for type traits is not available) 2007-03-30 19:45:57 +00:00
name-lookup.c name-lookup.c (ambiguous_decl): Adds check for hidden types. 2007-05-22 21:05:01 +00:00
name-lookup.h
operators.def
optimize.c omp-low.c (splay-tree.h): Include. 2007-03-31 14:07:29 +00:00
parser.c re PR c++/30759 (initializer-list accepted for object of non-POD type) 2007-06-07 19:59:33 +00:00
pt.c re PR c++/30759 (initializer-list accepted for object of non-POD type) 2007-06-07 19:59:33 +00:00
ptree.c
repo.c
rtti.c re PR c++/29928 (typeid of unknown bound array) 2007-05-14 20:21:34 +00:00
search.c
semantics.c re PR c++/32177 (g++ crashes on some valid OpenMP code) 2007-06-08 01:11:23 +02:00
tree.c re PR c++/7412 ([DR 106] References to references) 2007-05-31 01:18:22 +00:00
typeck.c re PR c++/30759 (initializer-list accepted for object of non-POD type) 2007-06-07 19:59:33 +00:00
typeck2.c re PR target/31388 (ICE building libiberty multilib for mips16 multilibs) 2007-04-26 02:29:43 +00:00