aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2009-04-16 13:23:13 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2009-04-16 13:23:13 +0000
commitccacdf0682bd9d3f9c1646a83328b39a67e60cc6 (patch)
treeb4ca92d1770ab1befed804ce5ea55e6305e8bc39 /gcc/tree-ssa.c
parent346ef3faa0225ae51f85931a0a259b144347b5e3 (diff)
downloadgcc-ccacdf0682bd9d3f9c1646a83328b39a67e60cc6.zip
gcc-ccacdf0682bd9d3f9c1646a83328b39a67e60cc6.tar.gz
gcc-ccacdf0682bd9d3f9c1646a83328b39a67e60cc6.tar.bz2
gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
2009-04-16 Richard Guenther <rguenther@suse.de> * gimple.c (gimple_copy): Do not clear addresses_taken bitmap. (gimple_ior_addresses_taken_1): New function. (gimple_ior_addresses_taken): Likewise. * gimple.h (struct gimple_statement_with_ops_base): Remove addresses_taken member. (gimple_ior_addresses_taken): Declare. (gimple_addresses_taken, gimple_addresses_taken_ptr, gimple_set_addresses_taken): Remove. * ipa-reference.c (mark_address): New function. (scan_stmt_for_static_refs): Use it for marking addresses taken. * tree-ssa-operands.c (add_to_addressable_set): Rename to ... (mark_address_taken): ... this. Just set TREE_ADDRESSABLE. (gimple_add_to_addresses_taken): Remove. (get_tmr_operands): Call mark_address_taken. (get_asm_expr_operands): Likewise. (get_expr_operands): Likewise. (build_ssa_operands): Do not clear the addresses_taken bitmap. (free_stmt_operands): Do not free it. * tree-ssa.c (delete_tree_ssa): Likewise. (execute_update_addresses_taken): Use gimple_ior_addresses_taken. From-SVN: r146191
Diffstat (limited to 'gcc/tree-ssa.c')
-rw-r--r--gcc/tree-ssa.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index ba0c6ab..a367941 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -834,7 +834,6 @@ delete_tree_ssa (void)
{
gimple_set_def_ops (stmt, NULL);
gimple_set_use_ops (stmt, NULL);
- gimple_set_addresses_taken (stmt, NULL);
}
if (gimple_has_mem_ops (stmt))
@@ -1504,13 +1503,12 @@ execute_update_addresses_taken (bool do_optimize)
{
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
- const_gimple stmt = gsi_stmt (gsi);
+ gimple stmt = gsi_stmt (gsi);
enum gimple_code code = gimple_code (stmt);
- bitmap taken = gimple_addresses_taken (stmt);
-
- if (taken)
- bitmap_ior_into (addresses_taken, taken);
-
+
+ /* Note all addresses taken by the stmt. */
+ gimple_ior_addresses_taken (addresses_taken, stmt);
+
/* If we have a call or an assignment, see if the lhs contains
a local decl that requires not to be a gimple register. */
if (code == GIMPLE_ASSIGN || code == GIMPLE_CALL)