This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix RPO VN region boundary check


The following moves the region boundary check for alias stmt walking
where it is effective.

Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk.

Richard.

2018-08-29  Richard Biener  <rguenther@suse.de>

	* tree-ssa-sccvn.c (vuse_ssa_val): Return NULL for unvisited
	virtual operands that are not default defs to honor region
	boundaries.
	(rpo_vn_valueize): Remove ineffective code here.

Index: gcc/tree-ssa-sccvn.c
===================================================================
--- gcc/tree-ssa-sccvn.c	(revision 263945)
+++ gcc/tree-ssa-sccvn.c	(working copy)
@@ -475,12 +474,16 @@ vuse_ssa_val (tree x)
 
   do
     {
-      tree tem = SSA_VAL (x);
-      /* stmt walking can walk over a backedge and reach code we didn't
-	 value-number yet.  */
-      if (tem == VN_TOP)
+      if (SSA_NAME_IS_DEFAULT_DEF (x))
 	return x;
-      x = tem;
+      vn_ssa_aux_t tem
+	= vn_ssa_aux_hash->find_with_hash (x, SSA_NAME_VERSION (x));
+      /* For region-based VN this makes walk_non_aliased_vuses stop walking
+	 when we are about to look at a def outside of the region.  */
+      if (!tem || !tem->visited)
+	return NULL_TREE;
+      gcc_assert (tem->valnum != VN_TOP);
+      x = tem->valnum;
     }
   while (SSA_NAME_IN_FREE_LIST (x));
 
@@ -5797,11 +5755,6 @@ rpo_vn_valueize (tree name)
   if (TREE_CODE (name) == SSA_NAME)
     {
       vn_ssa_aux_t val = VN_INFO (name);
-      /* For region-based VN this makes walk_non_aliased_vuses stop walking
-	 when we are about to look at a def outside of the region.  */
-      if (SSA_NAME_IS_VIRTUAL_OPERAND (name)
-	  && !val->visited)
-	return NULL_TREE;
       if (val)
 	{
 	  tree tem = val->valnum;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]