/*
- * 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.
*
* @file
* @brief control dependence analysis
* @author Christoph Mallon
- * @version $Id$
*/
#ifndef FIRM_ANA_CDEP_H
#define FIRM_ANA_CDEP_H
#include "firm_types.h"
+#include "begin.h"
-/**
- * An entry in the control dependence list.
+/** @ingroup irana
+ * @defgroup ir_cdep Control Dependence
+ * @{
*/
-struct ir_cdep {
- ir_node *node; /**< A node on which the current block is control dependent on. */
- ir_cdep *next; /**< Link to the next one if any. */
-};
-/** Compute the control dependence graph for a graph. */
-void compute_cdep(ir_graph *irg);
+/** Computes the control dependence graph for a graph. */
+FIRM_API void compute_cdep(ir_graph *irg);
+
+/** Frees the control dependence info. */
+FIRM_API void free_cdep(ir_graph *irg);
+
+/** Returns control dependent block */
+FIRM_API ir_node *get_cdep_node(const ir_cdep *cdep);
-/** Free the control dependence info. */
-void free_cdep(ir_graph *irg);
+/** Returns next entry in a list of cdeps */
+FIRM_API ir_cdep *get_cdep_next(const ir_cdep *cdep);
/**
- * Return a list of all control dependences of a block.
+ * Returns a list of all control dependences of a block.
*/
-ir_cdep *find_cdep(const ir_node *block);
-
-void exchange_cdep(ir_node *old, const ir_node *nw);
+FIRM_API ir_cdep *find_cdep(const ir_node *block);
/**
- * Check whether dependee is (directly) control dependent on candidate.
- *
- * @param dependee the (possible) dependent block
- * @param candidate the (possible) block on which dependee is dependent
+ * Replaces the control dependence info of old by the info of nw.
*/
-int is_cdep_on(const ir_node *dependee, const ir_node *candidate);
+FIRM_API void exchange_cdep(ir_node *old, const ir_node *nw);
/**
- * Check whether dependee is (possible iterated) control dependent on candidate.
+ * Checks whether dependee is (directly) control dependent on candidate.
*
* @param dependee the (possible) dependent block
* @param candidate the (possible) block on which dependee is dependent
*/
-int is_iterated_cdep_on(ir_node *dependee, ir_node *candidate);
+FIRM_API int is_cdep_on(const ir_node *dependee, const ir_node *candidate);
/**
- * If block is control dependent on exactly one node, return this node, else NULL.
+ * If block is control dependent on exactly one node, returns this node,
+ * else NULL.
*
* @param block the block to check
*/
-ir_node *get_unique_cdep(const ir_node *block);
+FIRM_API ir_node *get_unique_cdep(const ir_node *block);
/**
- * check if the given block is control dependent of more than one node.
+ * Checks if the given block is control dependent of more than one node.
*
* @param block the block to check
*/
-int has_multiple_cdep(const ir_node *block);
+FIRM_API int has_multiple_cdep(const ir_node *block);
+
+/** @} */
+
+#include "end.h"
#endif