From f6803e61a5c32b49e3d8f9cdd3ce10d0036c5b37 Mon Sep 17 00:00:00 2001 From: Daniel Grund Date: Wed, 25 Jan 2006 18:23:45 +0000 Subject: [PATCH] Added convinience function be_introduve_copies_pset --- ir/be/beirgmod.c | 27 +++++++++++++++++++++++++++ ir/be/beirgmod.h | 6 ++++-- 2 files changed, 31 insertions(+), 2 deletions(-) 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 -- 2.20.1