From: Daniel Grund Date: Wed, 25 Jan 2006 18:23:45 +0000 (+0000) Subject: Added convinience function be_introduve_copies_pset X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=f6803e61a5c32b49e3d8f9cdd3ce10d0036c5b37;p=libfirm Added convinience function be_introduve_copies_pset --- diff --git a/ir/be/beirgmod.c b/ir/be/beirgmod.c index 21380b82b..b668c3193 100644 --- a/ir/be/beirgmod.c +++ b/ir/be/beirgmod.c @@ -4,6 +4,12 @@ #include +#ifdef WIN32 +#include +#else +#include +#endif + #include "hashptr.h" #include "pdeq.h" #include "pset.h" @@ -418,3 +424,24 @@ void be_introduce_copies(dom_front_info_t *info, ir_node *orig, int n, ir_node * be_introduce_copies_ignore(info, orig, n, copy_nodes, empty_set); } + +void be_introduce_copies_pset(dom_front_info_t *info, pset *nodes) { + int i, n = pset_count(nodes); + ir_node *orig, *irn, **copy_nodes; + static pset *empty_set = NULL; + + if (n<2) + return; + + copy_nodes = alloca((n-1)*sizeof(*copy_nodes)); + irn = pset_first(nodes); + orig = irn; + for (i=0, irn = pset_next(nodes); irn; irn=pset_next(nodes)) + copy_nodes[i++] = irn; + + + if(!empty_set) + empty_set = pset_new_ptr_default(); + + be_introduce_copies_ignore(info, orig, n-1, copy_nodes, empty_set); +} diff --git a/ir/be/beirgmod.h b/ir/be/beirgmod.h index 691b53f2e..3d5c79734 100644 --- a/ir/be/beirgmod.h +++ b/ir/be/beirgmod.h @@ -60,6 +60,8 @@ void be_free_dominance_frontiers(dom_front_info_t *info); void be_introduce_copies_ignore(dom_front_info_t *info, ir_node *orig, int n, ir_node *copies[], pset *irgore_uses); -void be_introduce_copies(dom_front_info_t *info, ir_node *orig, - int n, ir_node *copies[]); +void be_introduce_copies(dom_front_info_t *info, ir_node *orig, int n, ir_node *copies[]); + +void be_introduce_copies_pset(dom_front_info_t *info, pset *nodes); + #endif