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 PR88274


Another inconsistency with -fstrict-enums handling of VRP.

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

Richard.

2018-11-30  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/88274
	* tree-vrp.c (ranges_from_anti_range): Fix handling of
	TYPE_MIN/MAX_VALUE.

Index: gcc/tree-vrp.c
===================================================================
--- gcc/tree-vrp.c	(revision 266657)
+++ gcc/tree-vrp.c	(working copy)
@@ -1249,14 +1249,14 @@ ranges_from_anti_range (const value_rang
       || !vrp_val_max (type))
     return false;
 
-  if (!vrp_val_is_min (ar->min ()))
-    *vr0 = value_range (VR_RANGE,
-			vrp_val_min (type),
-			wide_int_to_tree (type, wi::to_wide (ar->min ()) - 1));
-  if (!vrp_val_is_max (ar->max ()))
-    *vr1 = value_range (VR_RANGE,
-			wide_int_to_tree (type, wi::to_wide (ar->max ()) + 1),
-			vrp_val_max (type));
+  if (tree_int_cst_lt (vrp_val_min (type), ar->min ()))
+    vr0->set (VR_RANGE,
+	      vrp_val_min (type),
+	      wide_int_to_tree (type, wi::to_wide (ar->min ()) - 1));
+  if (tree_int_cst_lt (ar->max (), vrp_val_max (type)))
+    vr1->set (VR_RANGE,
+	      wide_int_to_tree (type, wi::to_wide (ar->max ()) + 1),
+	      vrp_val_max (type));
   if (vr0->undefined_p ())
     {
       *vr0 = *vr1;


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