rewrite vrp scanning to use a phase instead of attrs in ir_node
[libfirm] / include / libfirm / irdom.h
index 2c6e103..705d0fd 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
  *
  * This file is part of libFirm.
  *
@@ -23,7 +23,7 @@
  * @author    Goetz Lindenmaier
  * @date      2.2002
  * @version   $Id$
- * @summary
+ * @brief
  *   This file contains routines to construct and access dominator information.
  *
  *   The dominator information is stored in three fields of block nodes:
@@ -132,12 +132,24 @@ ir_node *get_Block_dominated_next(const ir_node *dom);
 
 /**
  * Check, if a block dominates another block.
- * @param a The first block.
- * @param b The second block.
+ *
+ * @param a   The potential dominator block.
+ * @param b   The potentially dominated block.
+ *
  * @return 1, if @p a dominates @p b, else 0.
  */
 int block_dominates(const ir_node *a, const ir_node *b);
 
+/**
+ * Check, if a block strictly dominates another block, i.e. a != b.
+ *
+ * @param a The potential dominator block.
+ * @param b The potentially dominated block.
+ *
+ * @return 1, if @p a strictly dominates @p b, else 0.
+ */
+int block_strictly_dominates(const ir_node *a, const ir_node *b);
+
 /**
  * Returns the smallest common dominator block of two nodes.
  * @param a A node.
@@ -156,18 +168,30 @@ ir_node *node_smallest_common_dominator(ir_node *a, ir_node *b);
  *
  * @param irn        A node.
  * @param handle_phi 1 if Phis should be handled different
- * @return The first block dominating all users of @irn
+ * @return The first block dominating all users of @irn
  */
 ir_node *node_users_smallest_common_dominator(ir_node *irn, int handle_phi);
 
 /**
  * Check, if a block post dominates another block.
- * @param a The first block.
- * @param b The second block.
+ *
+ * @param a The potential post dominator block.
+ * @param b The potentially post dominated block.
+ *
  * @return 1, if @p a post dominates @p b, else 0.
  */
 int block_postdominates(const ir_node *a, const ir_node *b);
 
+/**
+ * Check, if a block strictly post dominates another block, i.e. a != b.
+ *
+ * @param a The potential post dominator block.
+ * @param b The potentially post dominated block.
+ *
+ * @return 1, if @p a strictly post dominates @p b, else 0.
+ */
+int block_strictly_postdominates(const ir_node *a, const ir_node *b);
+
 /**
  * Visit all nodes in the dominator subtree of a given node.
  * Call a pre-visitor before descending to the children and call a
@@ -231,7 +255,7 @@ void postdom_tree_walk_irg(ir_graph *irg, irg_walk_func *pre,
  */
 void compute_doms(ir_graph *irg);
 
-/** Computes the dominator trees on demand */
+/** Computes the dominator trees on demand, @see compute_doms(). */
 void assure_doms(ir_graph *irg);
 
 /** Computes the post dominator trees.