diff options
author | Richard Guenther <rguenther@suse.de> | 2009-04-16 13:23:13 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-04-16 13:23:13 +0000 |
commit | ccacdf0682bd9d3f9c1646a83328b39a67e60cc6 (patch) | |
tree | b4ca92d1770ab1befed804ce5ea55e6305e8bc39 /gcc/gimple.h | |
parent | 346ef3faa0225ae51f85931a0a259b144347b5e3 (diff) | |
download | gcc-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/gimple.h')
-rw-r--r-- | gcc/gimple.h | 65 |
1 files changed, 13 insertions, 52 deletions
diff --git a/gcc/gimple.h b/gcc/gimple.h index bf09039..2d5ee0f 100644 --- a/gcc/gimple.h +++ b/gcc/gimple.h @@ -327,15 +327,10 @@ struct gimple_statement_base GTY(()) struct gimple_statement_with_ops_base GTY(()) { - /* [ WORD 1-4 ] */ + /* [ WORD 1-4 ] */ struct gimple_statement_base gsbase; - /* [ WORD 5 ] - Symbols whose addresses are taken by this statement (i.e., they - appear inside ADDR_EXPR nodes). */ - bitmap GTY((skip (""))) addresses_taken; - - /* [ WORD 6-7 ] + /* [ WORD 5-6 ] SSA operand vectors. NOTE: It should be possible to amalgamate these vectors with the operand vector OP. However, the SSA operand vectors are organized differently and contain @@ -349,10 +344,10 @@ struct gimple_statement_with_ops_base GTY(()) struct gimple_statement_with_ops GTY(()) { - /* [ WORD 1-7 ] */ + /* [ WORD 1-6 ] */ struct gimple_statement_with_ops_base opbase; - /* [ WORD 8 ] + /* [ WORD 7 ] Operand vector. NOTE! This must always be the last field of this structure. In particular, this means that this structure cannot be embedded inside another one. */ @@ -364,10 +359,10 @@ struct gimple_statement_with_ops GTY(()) struct gimple_statement_with_memory_ops_base GTY(()) { - /* [ WORD 1-7 ] */ + /* [ WORD 1-6 ] */ struct gimple_statement_with_ops_base opbase; - /* [ WORD 8-9 ] + /* [ WORD 7-8 ] Virtual operands for this statement. The GC will pick them up via the ssa_names array. */ tree GTY((skip (""))) vdef; @@ -379,10 +374,10 @@ struct gimple_statement_with_memory_ops_base GTY(()) struct gimple_statement_with_memory_ops GTY(()) { - /* [ WORD 1-9 ] */ + /* [ WORD 1-8 ] */ struct gimple_statement_with_memory_ops_base membase; - /* [ WORD 10 ] + /* [ WORD 9 ] Operand vector. NOTE! This must always be the last field of this structure. In particular, this means that this structure cannot be embedded inside another one. */ @@ -545,20 +540,20 @@ struct gimple_statement_wce GTY(()) struct gimple_statement_asm GTY(()) { - /* [ WORD 1-9 ] */ + /* [ WORD 1-8 ] */ struct gimple_statement_with_memory_ops_base membase; - /* [ WORD 10 ] + /* [ WORD 9 ] __asm__ statement. */ const char *string; - /* [ WORD 11 ] + /* [ WORD 10 ] Number of inputs, outputs and clobbers. */ unsigned char ni; unsigned char no; unsigned short nc; - /* [ WORD 12 ] + /* [ WORD 11 ] Operand vector. NOTE! This must always be the last field of this structure. In particular, this means that this structure cannot be embedded inside another one. */ @@ -916,6 +911,7 @@ extern bool walk_stmt_load_store_addr_ops (gimple, void *, extern bool walk_stmt_load_store_ops (gimple, void *, bool (*)(gimple, tree, void *), bool (*)(gimple, tree, void *)); +extern bool gimple_ior_addresses_taken (bitmap, gimple); /* In gimplify.c */ extern tree create_tmp_var_raw (tree, const char *); @@ -1242,41 +1238,6 @@ gimple_has_mem_ops (const_gimple g) return gimple_code (g) >= GIMPLE_ASSIGN && gimple_code (g) <= GIMPLE_RETURN; } -/* Return the set of addresses taken by statement G. */ - -static inline bitmap -gimple_addresses_taken (const_gimple g) -{ - if (gimple_has_ops (g)) - return g->gsops.opbase.addresses_taken; - else - return NULL; -} - - -/* Return a pointer to the set of addresses taken by statement G. */ - -static inline bitmap * -gimple_addresses_taken_ptr (gimple g) -{ - if (gimple_has_ops (g)) - return &g->gsops.opbase.addresses_taken; - else - return NULL; -} - - -/* Set B to be the set of addresses taken by statement G. The - previous set is freed. */ - -static inline void -gimple_set_addresses_taken (gimple g, bitmap b) -{ - gcc_assert (gimple_has_ops (g)); - BITMAP_FREE (g->gsops.opbase.addresses_taken); - g->gsops.opbase.addresses_taken = b; -} - /* Return the set of DEF operands for statement G. */ |