aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-dce.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-01-29 11:21:19 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-01-29 11:21:19 +0000
commitd4abfcc561b77aa2ac7328d965b08efd1b2561b2 (patch)
treed41c277b595780348ce12b51329c77c3442d46d6 /gcc/tree-ssa-dce.c
parent16b77b321eb72c5e2e1ec3628c035df80bef8534 (diff)
downloadgcc-d4abfcc561b77aa2ac7328d965b08efd1b2561b2.zip
gcc-d4abfcc561b77aa2ac7328d965b08efd1b2561b2.tar.gz
gcc-d4abfcc561b77aa2ac7328d965b08efd1b2561b2.tar.bz2
re PR middle-end/69547 (no-op array initializer emits an empty loop)
2016-01-29 Richard Biener <rguenther@suse.de> PR tree-optimization/69547 * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Do not mark clobbers necessary. (mark_all_reaching_defs_necessary_1): Likewise. * g++.dg/tree-ssa/pr69547.C: New testcase. From-SVN: r232976
Diffstat (limited to 'gcc/tree-ssa-dce.c')
-rw-r--r--gcc/tree-ssa-dce.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c
index 8c3dd8f..75aaee9 100644
--- a/gcc/tree-ssa-dce.c
+++ b/gcc/tree-ssa-dce.c
@@ -462,7 +462,8 @@ mark_aliased_reaching_defs_necessary_1 (ao_ref *ref, tree vdef, void *data)
gimple *def_stmt = SSA_NAME_DEF_STMT (vdef);
/* All stmts we visit are necessary. */
- mark_operand_necessary (vdef);
+ if (! gimple_clobber_p (def_stmt))
+ mark_operand_necessary (vdef);
/* If the stmt lhs kills ref, then we can stop walking. */
if (gimple_has_lhs (def_stmt)
@@ -584,7 +585,8 @@ mark_all_reaching_defs_necessary_1 (ao_ref *ref ATTRIBUTE_UNUSED,
}
}
- mark_operand_necessary (vdef);
+ if (! gimple_clobber_p (def_stmt))
+ mark_operand_necessary (vdef);
return false;
}