Patchwork Marking SCCs in ipa_reduced_postorder

login
register
mail settings
Submitter Martin Jambor
Date May 12, 2011, 4:11 p.m.
Message ID <20110512161140.GB6788@virgil.arch.suse.de>
Download mbox | patch
Permalink /patch/95340/
State New
Headers show

Comments

Martin Jambor - May 12, 2011, 4:11 p.m.
Hi,

in my current efforts to enhance IPA-CP I propagate values in a single
pass over the call graph nodes in the topological order and only
resort to "propagation until no change" in SCCs.

In order to do that I need to quickly figure out whether two nodes on
both sides of a call graph edge are in the same SCC.  I have not found
a way of doing that with the current code (please let me know if I
overlooked something obvious) but with the patch below it becomes as
simple as comparing their 

  ((struct ipa_dfs_info *) node->aux)->low_link

The patch bootstraps and tests fine on x86_64-linux.  Is it OK for
trunk?

Thanks,

Martin


2011-05-02  Martin Jambor  <mjambor@suse.cz>

	* ipa-utils.c (searchc): Update low_link to lowest DFN of a SCC.

Patch

Index: src/gcc/ipa-utils.c
===================================================================
--- src.orig/gcc/ipa-utils.c
+++ src/gcc/ipa-utils.c
@@ -134,6 +134,7 @@  searchc (struct searchc_env* env, struct
 	x = env->stack[--(env->stack_size)];
 	x_info = (struct ipa_dfs_info *) x->aux;
 	x_info->on_stack = false;
+	x_info->low_link = v_info->dfn_number;
 
 	if (env->reduce)
 	  {