X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Fcdep.h;h=b37e17f52f01895c7c07af8c1eaf59fc2d63b30f;hb=88b428f23045d2410147fb97b22d8b4982ef6b04;hp=17335fe7bef77268111720c19008796fa9c4c240;hpb=660f709377ad5d9b9742e9c1bcc37a6f999715b3;p=libfirm diff --git a/include/libfirm/cdep.h b/include/libfirm/cdep.h index 17335fe7b..b37e17f52 100644 --- a/include/libfirm/cdep.h +++ b/include/libfirm/cdep.h @@ -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. * @@ -21,62 +21,65 @@ * @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