+2010-04-13 Martin Jambor <mjambor@suse.cz>
+
+ * tree-sra.c (replace_uses_with_default_def_ssa_name): New function.
+ (sra_modify_assign): Delete stmts loading dead data even if racc has no
+ children. Call replace_uses_with_default_def_ssa_name to handle
+ SSA_NAES on lhs.
+
2010-04-13 Michael Matz <matz@suse.de>
PR middle-end/43730
}
/* Create a new suitable default definition SSA_NAME and replace all uses of
- SSA with it, RACC is access describing the uninitialized part of an
- aggregate that is being loaded. */
+ SSA with it. */
static void
-replace_uses_with_default_def_ssa_name (tree ssa, struct access *racc)
+replace_uses_with_default_def_ssa_name (tree ssa)
{
- tree repl, decl;
+ tree repl, decl = SSA_NAME_VAR (ssa);
+ if (TREE_CODE (decl) == PARM_DECL)
+ {
+ tree tmp = create_tmp_var (TREE_TYPE (decl), "SR");
+ if (TREE_CODE (TREE_TYPE (tmp)) == COMPLEX_TYPE
+ || TREE_CODE (TREE_TYPE (tmp)) == VECTOR_TYPE)
+ DECL_GIMPLE_REG_P (tmp) = 1;
+
+ get_var_ann (tmp);
+ add_referenced_var (tmp);
+ repl = make_ssa_name (tmp, gimple_build_nop ());
+ set_default_def (tmp, repl);
+ }
+ else
+ {
+ repl = gimple_default_def (cfun, decl);
+ if (!repl)
+ {
+ repl = make_ssa_name (decl, gimple_build_nop ());
+ set_default_def (decl, repl);
+ }
+ }
- decl = get_unrenamed_access_replacement (racc);
+ replace_uses_by (ssa, repl);
+}
repl = gimple_default_def (cfun, decl);
if (!repl)
false, false);
gcc_assert (*stmt == gsi_stmt (*gsi));
if (TREE_CODE (lhs) == SSA_NAME)
- replace_uses_with_default_def_ssa_name (lhs, racc);
+ replace_uses_with_default_def_ssa_name (lhs);
unlink_stmt_vdef (*stmt);
gsi_remove (gsi, true);