Fix compile-time hog in MPX boundary checking (PR target/84988).
authorMartin Liska <mliska@suse.cz>
Wed, 21 Mar 2018 08:26:05 +0000 (09:26 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Wed, 21 Mar 2018 08:26:05 +0000 (08:26 +0000)
2018-03-21  Martin Liska  <mliska@suse.cz>

PR target/84988
* tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
(chkp_find_bound_slots_1): Limit number of iterations.

From-SVN: r258704

gcc/ChangeLog
gcc/tree-chkp.c

index 53224b1895eb795fd34fcd3c3bd96fd786b79f39..62899c0e874379eb439ebe892d620b8eb16b0e30 100644 (file)
@@ -1,3 +1,9 @@
+2018-03-21  Martin Liska  <mliska@suse.cz>
+
+       PR target/84988
+       * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
+       (chkp_find_bound_slots_1): Limit number of iterations.
+
 2018-03-20  David H. Gutteridge  <dhgutteridge@sympatico.ca>
 
        PR target/84838
index 40497ce94e743fccbae193af0b7e37f98d365b56..d10e6c404236dfbea3d47e8bc0ef7461a8919081 100644 (file)
@@ -1688,6 +1688,10 @@ chkp_find_bounds_for_elem (tree elem, tree *all_bounds,
     }
 }
 
+/* Maximum number of elements to check in an array.  */
+
+#define CHKP_ARRAY_MAX_CHECK_STEPS    4096
+
 /* Fill HAVE_BOUND output bitmap with information about
    bounds requred for object of type TYPE.
 
@@ -1733,7 +1737,9 @@ chkp_find_bound_slots_1 (const_tree type, bitmap have_bound,
          || integer_minus_onep (maxval))
        return;
 
-      for (cur = 0; cur <= TREE_INT_CST_LOW (maxval); cur++)
+      for (cur = 0;
+         cur <= MIN (CHKP_ARRAY_MAX_CHECK_STEPS, TREE_INT_CST_LOW (maxval));
+         cur++)
        chkp_find_bound_slots_1 (etype, have_bound, offs + cur * esize);
     }
 }