modulo-sched: prevent division by zero (PR87979)
authorRoman Zhuykov <zhroma@ispras.ru>
Tue, 23 Apr 2019 13:14:57 +0000 (13:14 +0000)
committerRoman Zhuykov <zhroma@gcc.gnu.org>
Tue, 23 Apr 2019 13:14:57 +0000 (13:14 +0000)
PR rtl-optimization/87979
* modulo-sched.c (sms_schedule): Start ii value "mii" should
not equal zero.

testsuite:

PR rtl-optimization/87979
* gcc.dg/pr87979.c: New test.

From-SVN: r270512

gcc/ChangeLog
gcc/modulo-sched.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr87979.c [new file with mode: 0644]

index f7109468b9740539a5dbd29e22d9ab484c508e90..5ea2fa0c4423d2f82c163801f7e037307e536f7e 100644 (file)
@@ -1,3 +1,9 @@
+2019-04-23  Roman Zhuykov  <zhroma@ispras.ru>
+
+       PR rtl-optimization/87979
+       * modulo-sched.c (sms_schedule): Start ii value "mii" should
+       not equal zero.
+
 2019-04-23  Roman Zhuykov  <zhroma@ispras.ru>
 
        PR rtl-optimization/84032
index 44014a063878d596dee63f4ad1f2889dc3600940..9954ea5cfa145e5aff88a67ef0afbeb200e65ac7 100644 (file)
@@ -1597,6 +1597,7 @@ sms_schedule (void)
       mii = 1; /* Need to pass some estimate of mii.  */
       rec_mii = sms_order_nodes (g, mii, node_order, &max_asap);
       mii = MAX (res_MII (g), rec_mii);
+      mii = MAX (mii, 1);
       maxii = MAX (max_asap, MAXII_FACTOR * mii);
 
       if (dump_file)
index 029bad5ae95991fa7c39bd1f544c756c3dba885a..9946c868cf7c1e6555123055f89c881174d7e65f 100644 (file)
@@ -1,3 +1,8 @@
+2019-04-23  Roman Zhuykov  <zhroma@ispras.ru>
+
+       PR rtl-optimization/87979
+       * gcc.dg/pr87979.c: New test.
+
 2019-04-23  Roman Zhuykov  <zhroma@ispras.ru>
 
        PR rtl-optimization/84032
diff --git a/gcc/testsuite/gcc.dg/pr87979.c b/gcc/testsuite/gcc.dg/pr87979.c
new file mode 100644 (file)
index 0000000..d3d595f
--- /dev/null
@@ -0,0 +1,11 @@
+/* PR rtl-optimization/87979 */
+/* { dg-do compile } */
+/* { dg-options "-Os -fmodulo-sched -fno-tree-loop-im" } */
+/* { dg-additional-options "-march=z196" { target { s390*-*-* } } } */
+
+void foo(void)
+{
+  static int m;
+  for (int i = 0; i < 10; ++i)
+    m++;
+}