aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-ssa.c')
-rw-r--r--gcc/tree-ssa.c19
1 files changed, 4 insertions, 15 deletions
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index bcf65e1..2535461 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -1188,10 +1188,11 @@ tree_ssa_strip_useless_type_conversions (tree exp)
}
-/* Return true if T, an SSA_NAME, has an undefined value. */
+/* Return true if T, an SSA_NAME, has an undefined value. PARTIAL is what
+ should be returned if the value is only partially undefined. */
bool
-ssa_undefined_value_p (tree t)
+ssa_undefined_value_p (tree t, bool partial)
{
gimple def_stmt;
tree var = SSA_NAME_VAR (t);
@@ -1215,7 +1216,7 @@ ssa_undefined_value_p (tree t)
return true;
/* Check if the complex was not only partially defined. */
- if (is_gimple_assign (def_stmt)
+ if (partial && is_gimple_assign (def_stmt)
&& gimple_assign_rhs_code (def_stmt) == COMPLEX_EXPR)
{
tree rhs1, rhs2;
@@ -1561,18 +1562,6 @@ execute_update_addresses_taken (void)
if (gimple_assign_lhs (stmt) != lhs)
gimple_assign_set_lhs (stmt, lhs);
- /* For var ={v} {CLOBBER}; where var lost
- TREE_ADDRESSABLE just remove the stmt. */
- if (DECL_P (lhs)
- && TREE_CLOBBER_P (rhs)
- && bitmap_bit_p (suitable_for_renaming, DECL_UID (lhs)))
- {
- unlink_stmt_vdef (stmt);
- gsi_remove (&gsi, true);
- release_defs (stmt);
- continue;
- }
-
if (gimple_assign_rhs1 (stmt) != rhs)
{
gimple_stmt_iterator gsi = gsi_for_stmt (stmt);