diff options
author | Daniel Berlin <dberlin@dberlin.org> | 2006-10-30 01:58:42 +0000 |
---|---|---|
committer | Daniel Berlin <dberlin@gcc.gnu.org> | 2006-10-30 01:58:42 +0000 |
commit | 83737db21d7e440fe1332a23b9bbd6eaea85135a (patch) | |
tree | a2c95dc5885e49e3d61cf5b9b0df8c0b651b00bc /gcc/tree-flow-inline.h | |
parent | 7c73bdc185341485061329f6eab27fd82450c593 (diff) | |
download | gcc-83737db21d7e440fe1332a23b9bbd6eaea85135a.zip gcc-83737db21d7e440fe1332a23b9bbd6eaea85135a.tar.gz gcc-83737db21d7e440fe1332a23b9bbd6eaea85135a.tar.bz2 |
tree.h (tree_value_handle): Remove struct value_set declaration.
2006-10-29 Daniel Berlin <dberlin@dberlin.org>
* tree.h (tree_value_handle): Remove struct value_set declaration.
Change value_set to bitmap_set.
* tree-pretty-print.c (dump_generic_node): Use has_stmt_ann.
* tree-vn.c (get_value_handle): Made inline and moved to
tree-flow-inline.h.
* tree-flow-inline.h: (has_stmt_ann): New function.
* tree-ssa-pre.c (expressions): New variable.
(next_expression_id): Ditto.
(alloc_expression_id): New function.
(struct value_set): Remove.
(get_expression_id): New function.
(get_or_alloc_expression_id): Ditto.
(expression_for_id): Ditto.
(clear_expression_ids): Ditto.
(FOR_EACH_EXPR_ID_IN_SET): New macro.
(bb_value_sets): Renamed to bb_bitmap_sets.
All value sets replaced with bitmap_sets.
Add visited member.
(BB_VISITED): New macro.
(postorder): New variable.
(add_to_value): Removed.
(value_exists_in_set_bitmap): Ditto.
(value_insert_into_set_bitmap): Ditto.
(set_new): Ditto.
(set_copy): Ditto.
(set_remove): Ditto.
(set_contains_value): Ditto.
(insert_into_set): Ditto.
(set_equal): Ditto.
(find_leader): Ditto.
(bitmap_set_subtract_from_value_set): Ditto.
(value_insert_into_set): Ditto.
(print_value_set): Ditto.
(debug_value_set): Ditto.
(constant_expr_p): New function.
(bitmap_remove_from_set): Ditto.
(bitmap_insert_into_set): Ditto.
(bitmap_set_free): Ditto.
(vh_compare): Ditto.
(sorted_array_from_bitmap_set): Ditto.
(bitmap_set_subtract): Ditto.
(bitmap_set_equal): Ditto.
(debug_bitmap_set): Ditto.
(find_leader_in_sets): Ditto.
(bitmap_set_replace_value): Modify for bitmapped sets.
(phi_translate): Ditto.
(phi_translate_set): Ditto.
(bitmap_find_leader): Ditto.
(valid_in_sets): Ditto.
(union_contains_value): Ditto.
(clean): Ditto.
(compute_antic_aux): Ditto. Mark changed blocks.
(compute_antic): Ditto. Iterate in postorder and only over
changing blocks.
(compute_rvuse_and_antic_safe): Reuse postorder.
(create_component_ref_by_pieces): Modify for bitmapped sets.
(find_or_generate_expression): Ditto.
(create_expression_by_pieces): Ditto.
(insert_into_preds_of_block): Ditto.
(changed_blocks): New variable.
(do_regular_insertion): Broken out from insert_aux.
(insert_aux): Modified for bitmapped sets.
(find_existing_value_expr): New function.
(create_value_expr_from): Use it.
(insert_extra_phis): Removed.
(print_bitmap_set): Renamed from bitmap_print_value_set.
(compute_avail): Handle RETURN_EXPR.
(init_pre): Modify for bitmapped sets.
* tree-flow.h (has_stmt_ann): New function.
From-SVN: r118169
Diffstat (limited to 'gcc/tree-flow-inline.h')
-rw-r--r-- | gcc/tree-flow-inline.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/gcc/tree-flow-inline.h b/gcc/tree-flow-inline.h index a3bb652..ceb1bc9 100644 --- a/gcc/tree-flow-inline.h +++ b/gcc/tree-flow-inline.h @@ -163,6 +163,17 @@ get_function_ann (tree var) return (ann) ? ann : create_function_ann (var); } +/* Return true if T has a statement annotation attached to it. */ + +static inline bool +has_stmt_ann (tree t) +{ +#ifdef ENABLE_CHECKING + gcc_assert (is_gimple_stmt (t)); +#endif + return t->common.ann && t->common.ann->common.type == STMT_ANN; +} + /* Return the statement annotation for T, which must be a statement node. Return NULL if the statement annotation doesn't exist. */ static inline stmt_ann_t @@ -1620,4 +1631,32 @@ overlap_subvar (unsigned HOST_WIDE_INT offset, unsigned HOST_WIDE_INT size, } +/* Get the value handle of EXPR. This is the only correct way to get + the value handle for a "thing". If EXPR does not have a value + handle associated, it returns NULL_TREE. + NB: If EXPR is min_invariant, this function is *required* to return + EXPR. */ + +static inline tree +get_value_handle (tree expr) +{ + if (TREE_CODE (expr) == SSA_NAME) + return SSA_NAME_VALUE (expr); + else if (DECL_P (expr) || TREE_CODE (expr) == TREE_LIST + || TREE_CODE (expr) == CONSTRUCTOR) + { + tree_ann_common_t ann = tree_common_ann (expr); + return ((ann) ? ann->value_handle : NULL_TREE); + } + else if (is_gimple_min_invariant (expr)) + return expr; + else if (EXPR_P (expr)) + { + tree_ann_common_t ann = tree_common_ann (expr); + return ((ann) ? ann->value_handle : NULL_TREE); + } + else + gcc_unreachable (); +} + #endif /* _TREE_FLOW_INLINE_H */ |