aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-copy.c
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2008-01-28 19:43:51 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2008-01-28 19:43:51 +0000
commite8b0eabccd680e52131e674430a3b14416abf233 (patch)
tree9ec8e655c3e072818b1caf8e5d6dbde0e71be4dd /gcc/tree-ssa-copy.c
parentbc81405676677a2216476eaebc34d23adf855f83 (diff)
downloadgcc-e8b0eabccd680e52131e674430a3b14416abf233.zip
gcc-e8b0eabccd680e52131e674430a3b14416abf233.tar.gz
gcc-e8b0eabccd680e52131e674430a3b14416abf233.tar.bz2
re PR c++/34862 (operator new placement variant with reference arg not accepted by g++ 4.3)
PR c++/34862 PR c++/33407 * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't coalesce pointers if they have different DECL_NO_TBAA_P values. * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies between variables with different DECL_NO_TBAA_P values. From-SVN: r131916
Diffstat (limited to 'gcc/tree-ssa-copy.c')
-rw-r--r--gcc/tree-ssa-copy.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/tree-ssa-copy.c b/gcc/tree-ssa-copy.c
index 7ae6825..2cd30c9 100644
--- a/gcc/tree-ssa-copy.c
+++ b/gcc/tree-ssa-copy.c
@@ -1,5 +1,5 @@
/* Copy propagation and SSA_NAME replacement support routines.
- Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This file is part of GCC.
@@ -143,6 +143,11 @@ may_propagate_copy (tree dest, tree orig)
else if (get_alias_set (TREE_TYPE (type_d)) !=
get_alias_set (TREE_TYPE (type_o)))
return false;
+ else if (!MTAG_P (SSA_NAME_VAR (dest))
+ && !MTAG_P (SSA_NAME_VAR (orig))
+ && (DECL_NO_TBAA_P (SSA_NAME_VAR (dest))
+ != DECL_NO_TBAA_P (SSA_NAME_VAR (orig))))
+ return false;
/* Also verify flow-sensitive information is compatible. */
if (SSA_NAME_PTR_INFO (orig) && SSA_NAME_PTR_INFO (dest))