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] Adjust extract_range_from_multiplicative_op


To not extract type from op0.

Bootstrapped and tested on x86_64-unknown-linux-gnu.

2019-07-25  Richard Biener  <rguenther@suse.de>

	* tree-vrp.c (extract_range_from_multiplicative_op): Add
	type parameter and use it instead of guessing expression
	type from the first operand.
	(extract_range_from_binary_expr): Pass expr_type down.

Index: gcc/tree-vrp.c
===================================================================
--- gcc/tree-vrp.c	(revision 273792)
+++ gcc/tree-vrp.c	(working copy)
@@ -1238,7 +1238,7 @@ extract_range_into_wide_ints (const valu
 
 static void
 extract_range_from_multiplicative_op (value_range_base *vr,
-				      enum tree_code code,
+				      enum tree_code code, tree type,
 				      const value_range_base *vr0,
 				      const value_range_base *vr1)
 {
@@ -1253,7 +1253,6 @@ extract_range_from_multiplicative_op (va
   gcc_assert (vr0->kind () == VR_RANGE
 	      && vr0->kind () == vr1->kind ());
 
-  tree type = vr0->type ();
   wide_int res_lb, res_ub;
   wide_int vr0_lb = wi::to_wide (vr0->min ());
   wide_int vr0_ub = wi::to_wide (vr0->max ());
@@ -1785,7 +1784,7 @@ extract_range_from_binary_expr (value_ra
 	  vr->set_varying ();
 	  return;
 	}
-      extract_range_from_multiplicative_op (vr, code, &vr0, &vr1);
+      extract_range_from_multiplicative_op (vr, code, expr_type, &vr0, &vr1);
       return;
     }
   else if (code == RSHIFT_EXPR
@@ -1806,7 +1805,8 @@ extract_range_from_binary_expr (value_ra
 	      if (vr0.kind () != VR_RANGE || vr0.symbolic_p ())
 		vr0.set (VR_RANGE, vrp_val_min (expr_type),
 			 vrp_val_max (expr_type));
-	      extract_range_from_multiplicative_op (vr, code, &vr0, &vr1);
+	      extract_range_from_multiplicative_op (vr, code, expr_type,
+						    &vr0, &vr1);
 	      return;
 	    }
 	  else if (code == LSHIFT_EXPR


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