aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-flow-inline.h
diff options
context:
space:
mode:
authorDaniel Berlin <dberlin@dberlin.org>2006-10-30 01:58:42 +0000
committerDaniel Berlin <dberlin@gcc.gnu.org>2006-10-30 01:58:42 +0000
commit83737db21d7e440fe1332a23b9bbd6eaea85135a (patch)
treea2c95dc5885e49e3d61cf5b9b0df8c0b651b00bc /gcc/tree-flow-inline.h
parent7c73bdc185341485061329f6eab27fd82450c593 (diff)
downloadgcc-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.h39
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 */