[PATCH] Fix PR60849

Richard Biener rguenther@suse.de
Thu Apr 17 11:39:00 GMT 2014


On Thu, 17 Apr 2014, Marc Glisse wrote:

> On Thu, 17 Apr 2014, Richard Biener wrote:
> 
> > This fixes PR60849 by properly rejecting non-boolean typed
> > comparisons from valid_gimple_rhs_p so they go through the
> > gimplification paths.
> 
> Could you also accept vector comparisons please?

Sure.  Testing in progress.

Richard.

2014-04-17  Richard Biener  <rguenther@suse.de>

	PR middle-end/60849
	* tree-ssa-propagate.c (valid_gimple_rhs_p): Allow vector
	comparison results and add clarifying comment.

Index: gcc/tree-ssa-propagate.c
===================================================================
--- gcc/tree-ssa-propagate.c	(revision 209469)
+++ gcc/tree-ssa-propagate.c	(working copy)
@@ -572,9 +572,13 @@ valid_gimple_rhs_p (tree expr)
       break;
 
     case tcc_comparison:
-      if (!INTEGRAL_TYPE_P (TREE_TYPE (expr))
-	  || (TREE_CODE (TREE_TYPE (expr)) != BOOLEAN_TYPE
-	      && TYPE_PRECISION (TREE_TYPE (expr)) != 1))
+      /* GENERIC allows comparisons with non-boolean types, reject
+         those for GIMPLE.  Let vector-typed comparisons pass - rules
+	 for GENERIC and GIMPLE are the same here.  */
+      if (!(INTEGRAL_TYPE_P (TREE_TYPE (expr))
+	    && (TREE_CODE (TREE_TYPE (expr)) == BOOLEAN_TYPE
+		|| TYPE_PRECISION (TREE_TYPE (expr)) == 1))
+	  && TREE_CODE (TREE_TYPE (expr)) != VECTOR_TYPE)
 	return false;
 
       /* Fallthru.  */



More information about the Gcc-patches mailing list