diff options
author | Richard Guenther <rguenther@suse.de> | 2009-01-27 10:42:59 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-01-27 10:42:59 +0000 |
commit | b5c3dfbbfb5bd2c75b333b5ef99a06e57d790096 (patch) | |
tree | 35e4880bf75f0d631d220529700fa59d67fd7ad5 /gcc/tree-ssa-structalias.c | |
parent | 576de5cb6e4c42c549138a661792e1f7efc81724 (diff) | |
download | gcc-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.c | 18 |
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)); } |