From: Christoph Mallon Date: Wed, 30 Jul 2008 09:55:44 +0000 (+0000) Subject: Reduce worst time complexity of mem parallelisation from O(2**n) to O(n**2). X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=9bf7cffd000f23a53c12242b5ecdc797bcdf1840;p=libfirm Reduce worst time complexity of mem parallelisation from O(2**n) to O(n**2). [r20791] --- diff --git a/ir/opt/ldst2.c b/ir/opt/ldst2.c index abe200500..deed71c6e 100644 --- a/ir/opt/ldst2.c +++ b/ir/opt/ldst2.c @@ -628,6 +628,10 @@ typedef struct parallelise_info static void parallelise_load(parallelise_info *pi, ir_node *irn) { + /* There is no point in investigating the same subgraph twice */ + if (ir_nodeset_contains(&pi->user_mem, irn)) + return; + //ir_fprintf(stderr, "considering %+F\n", irn); if (get_nodes_block(irn) == pi->origin_block) { if (is_Proj(irn)) { @@ -673,6 +677,10 @@ static void parallelise_load(parallelise_info *pi, ir_node *irn) static void parallelise_store(parallelise_info *pi, ir_node *irn) { + /* There is no point in investigating the same subgraph twice */ + if (ir_nodeset_contains(&pi->user_mem, irn)) + return; + //ir_fprintf(stderr, "considering %+F\n", irn); if (get_nodes_block(irn) == pi->origin_block) { if (is_Proj(irn)) {