aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-parloops.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-parloops.c')
-rw-r--r--gcc/tree-parloops.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c
index cea6f03..0416745 100644
--- a/gcc/tree-parloops.c
+++ b/gcc/tree-parloops.c
@@ -494,9 +494,12 @@ take_address_of (tree obj, tree type, edge entry,
if (gsi == NULL)
return NULL;
addr = TREE_OPERAND (*var_p, 0);
- name = make_temp_ssa_name (TREE_TYPE (addr), NULL,
- get_name (TREE_OPERAND
- (TREE_OPERAND (*var_p, 0), 0)));
+ const char *obj_name
+ = get_name (TREE_OPERAND (TREE_OPERAND (*var_p, 0), 0));
+ if (obj_name)
+ name = make_temp_ssa_name (TREE_TYPE (addr), NULL, obj_name);
+ else
+ name = make_ssa_name (TREE_TYPE (addr), NULL);
stmt = gimple_build_assign (name, addr);
gsi_insert_on_edge_immediate (entry, stmt);
@@ -694,6 +697,12 @@ eliminate_local_variables_stmt (edge entry, gimple_stmt_iterator *gsi,
dta.changed = true;
}
}
+ else if (gimple_clobber_p (stmt))
+ {
+ stmt = gimple_build_nop ();
+ gsi_replace (gsi, stmt, false);
+ dta.changed = true;
+ }
else
{
dta.gsi = gsi;