X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fcommon%2Firtools.h;h=2d9461158db77607950b1efb1586dc9887c4883a;hb=51eff1cc020af2ed56d9ea226fe20faf801cac5b;hp=53bbe4328a55a07ab92f5ae715c750844ee64ca0;hpb=21384348dca3a9feeb900ea0f4b2204eb34592bc;p=libfirm diff --git a/ir/common/irtools.h b/ir/common/irtools.h index 53bbe4328..2d9461158 100644 --- a/ir/common/irtools.h +++ b/ir/common/irtools.h @@ -6,11 +6,11 @@ * Modified by: * Created: * CVS-ID: $Id$ - * Copyright: (c) 1999-2005 Universität Karlsruhe + * Copyright: (c) 1999-2006 Universität Karlsruhe * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. */ -#ifndef _IRTOOLS_H_ -#define _IRTOOLS_H_ +#ifndef _FIRM_COMMON_IRTOOLS_H_ +#define _FIRM_COMMON_IRTOOLS_H_ #include "firm_config.h" #include "firm_types.h" @@ -20,11 +20,22 @@ lc_opt_entry_t *firm_opt_get_root(void); #endif +#include "pset.h" + #undef MIN #undef MAX #define MAX(x, y) ((x) > (y) ? (x) : (y)) #define MIN(x, y) ((x) < (y) ? (x) : (y)) +/** + * Three valued compare as demanded by e.g. qsort(3) + * @param c A number. + * @param d Another number. + * @return 0 if c == d, -1 if c < d, 1 if c > d. + */ +#define QSORT_CMP(c, d) (((c) > (d)) - ((c) < (d))) + + /** * convert an integer into pointer */ @@ -35,6 +46,11 @@ lc_opt_entry_t *firm_opt_get_root(void); */ #define PTR_TO_INT(v) ((int)((char *)(v) - (char *)0)) +/** + * Dump a pset containing Firm objects. + */ +void firm_pset_dump(pset *set); + /** * The famous clear_link() walker-function. * Do not implement it by yourself, use this one @@ -54,4 +70,15 @@ void firm_clear_link(ir_node *n, void *env); */ void copy_irn_to_irg(ir_node *n, ir_graph *irg); -#endif /* _IRTOOLS_H_ */ +/** + * Creates an exact copy of a node. + * The copy resists on the same graph in the same block. + * + * @param n the node to copy + * + * @note If the copy is not changed, the next CSE operation will + * replace it by the original, so beware. + */ +ir_node *exact_copy(const ir_node *n); + +#endif /* _FIRM_COMMON_IRTOOLS_H_ */