aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-structalias.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2009-01-27 10:42:59 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2009-01-27 10:42:59 +0000
commitb5c3dfbbfb5bd2c75b333b5ef99a06e57d790096 (patch)
tree35e4880bf75f0d631d220529700fa59d67fd7ad5 /gcc/tree-ssa-structalias.c
parent576de5cb6e4c42c549138a661792e1f7efc81724 (diff)
downloadgcc-b5c3dfbbfb5bd2c75b333b5ef99a06e57d790096.zip
gcc-b5c3dfbbfb5bd2c75b333b5ef99a06e57d790096.tar.gz
gcc-b5c3dfbbfb5bd2c75b333b5ef99a06e57d790096.tar.bz2
re PR middle-end/38503 (warnings from -isystem headers strikes back.)
2009-01-27 Richard Guenther <rguenther@suse.de> PR tree-optimization/38503 * cfgexpand.c (expand_gimple_basic_block): Ignore GIMPLE_CHANGE_DYNAMIC_TYPE during expansion. * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune variables that cannot have TBAA applied. (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE statements. * g++.dg/warn/Wstrict-aliasing-bogus-placement-new.C: New testcase. From-SVN: r143700
Diffstat (limited to 'gcc/tree-ssa-structalias.c')
-rw-r--r--gcc/tree-ssa-structalias.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index 8b49556b..cae478a 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -4703,7 +4703,8 @@ set_uids_in_ptset (tree ptr, bitmap into, bitmap from, bool is_derefed,
type-based pruning disabled. */
if (vi->is_artificial_var
|| !is_derefed
- || no_tbaa_pruning)
+ || no_tbaa_pruning
+ || vi->no_tbaa_pruning)
bitmap_set_bit (into, DECL_UID (vi->decl));
else
{
@@ -5496,19 +5497,8 @@ compute_points_to_sets (void)
find_func_aliases (phi);
}
- for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); )
- {
- gimple stmt = gsi_stmt (gsi);
-
- find_func_aliases (stmt);
-
- /* The information in GIMPLE_CHANGE_DYNAMIC_TYPE statements
- has now been captured, and we can remove them. */
- if (gimple_code (stmt) == GIMPLE_CHANGE_DYNAMIC_TYPE)
- gsi_remove (&gsi, true);
- else
- gsi_next (&gsi);
- }
+ for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+ find_func_aliases (gsi_stmt (gsi));
}