X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeutil.h;h=47af83a6033d10b049cb4119abdbfa0bad6f1bd9;hb=a92ff34e623ded0eb85277c1f37235947855dffb;hp=c11eac3f05bf2398f17d8af655b2888b21b4fd71;hpb=0f9e388d0a008c3215229024b80897bdc9a6c4e9;p=libfirm diff --git a/ir/be/beutil.h b/ir/be/beutil.h index c11eac3f0..47af83a60 100644 --- a/ir/be/beutil.h +++ b/ir/be/beutil.h @@ -8,7 +8,10 @@ #include "pset.h" #include "irnode.h" -#include "bearch.h" +#include "bearch_t.h" + +/* iterate over a list of ir_nodes linked by link field */ +#define foreach_linked_irns(head, iter) for ((iter) = (head); (iter); (iter) = get_irn_link((iter))) /** * Get an empty set. @@ -16,7 +19,6 @@ */ pset *be_empty_set(void); - /** Undefine this to disable debugging mode. */ #define BE_DEBUG 1 @@ -64,14 +66,6 @@ static INLINE int is_data_node(const ir_node *irn) return 0; } -/** - * Make each constant local to its use. - * This duplicates all constants in order to simulate a realistic - * register pressure. - * @param irg The graph. - */ -void localize_consts(ir_graph *irg); - /** * Dump a vcg graph containing the controlflow graph, the schedule and * allocated registers. @@ -87,6 +81,7 @@ static INLINE FILE *ffopen(const char *base, const char *ext, const char *mode) char buf[1024]; snprintf(buf, sizeof(buf), "%s.%s", base, ext); + buf[sizeof(buf) - 1] = '\0'; if (! (out = fopen(buf, mode))) { fprintf(stderr, "Cannot open file %s in mode %s\n", buf, mode); return NULL; @@ -116,8 +111,18 @@ void dump_ir_extblock_graph_sched(ir_graph *irg, const char *suffix); */ void be_dump(ir_graph *irg, const char *suffix, void (*dumper)(ir_graph *, const char *)); +/** + * Returns the number of reachable nodes in an irg. + * @param irg The irg. + * @return The number of reachable nodes. + */ +unsigned get_num_reachable_nodes(ir_graph *irg); -#endif /* _BEUTIL_H */ +/** + * Sets all node inputs to BAD node. + * @param irn The node to be killed. + */ +void be_kill_node(ir_node *irn); /** * Search for an irn in @p accept. @@ -125,3 +130,10 @@ void be_dump(ir_graph *irg, const char *suffix, void (*dumper)(ir_graph *, const * @return The first node out of accept if found. Else NULL is returned. */ ir_node *dom_up_search(pset *accept, ir_node *start_point_exclusive); + +/** + * Gets the Proj with number pn from irn. + */ +ir_node *be_get_Proj_for_pn(const ir_node *irn, long pn); + +#endif /* _BEUTIL_H */