aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple.h
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/gimple.h
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/gimple.h')
-rw-r--r--gcc/gimple.h65
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. */