X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeirgmod.c;h=b668c31930371979b31fb0202f8240ea4f9bd651;hb=f6803e61a5c32b49e3d8f9cdd3ce10d0036c5b37;hp=21380b82bf48464939690aae9af61e0b7c4961a8;hpb=2bf11d78fec1564e24086de28338f85bdb27c187;p=libfirm 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); +}