]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR rtl-optimization/9768 ([HP-PA] ICE when optimizing inline code at -O2)
authorRandolph Chung <tausq@debian.org>
Thu, 20 Feb 2003 20:11:04 +0000 (20:11 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Thu, 20 Feb 2003 20:11:04 +0000 (20:11 +0000)
PR optimization/9768
Backport patch from mainline:

2002-03-21  DJ Delorie  <dj@redhat.com>

* bb-reorder.c (make_reorder_chain_1): Protect against
when redundant edges are omitted.
* predict.c (dump_prediction): Likewise.

Co-Authored-By: Eric Botcazou <ebotcazou@libertysurf.fr>
From-SVN: r63180

gcc/ChangeLog
gcc/bb-reorder.c
gcc/predict.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/20030220-1.c [new file with mode: 0644]

index cb7fb2c2a6d51631fb85738a9ab08698a9dfa8bb..13bcb1af571d4caaddc87a46ce1f99829a3f4f7f 100644 (file)
@@ -1,3 +1,15 @@
+2003-02-20  Randolph Chung  <tausq@debian.org>
+            Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+       PR optimization/9768
+       Backport patch from mainline:
+
+       2002-03-21  DJ Delorie  <dj@redhat.com>
+
+       * bb-reorder.c (make_reorder_chain_1): Protect against
+       when redundant edges are omitted.
+       * predict.c (dump_prediction): Likewise.
+
 2003-02-20  BAN Nobuhiro  <ban@ipl.t.u-tokyo.ac.jp>
 
        PR c/9678
index b0cc46215ea6272dd2420cd00dcddd36a9cb55a8..9a25281d8409eba76bcbfb99f24759bc84b924de 100644 (file)
@@ -205,7 +205,7 @@ make_reorder_chain_1 (bb, prev)
            e_taken = e;
        }
 
-      next = (taken ? e_taken : e_fall)->dest;
+      next = ((taken && e_taken) ? e_taken : e_fall)->dest;
     }
 
   /* In the absence of a prediction, disturb things as little as possible
index bcafef2692ac12decd65ec1a1737f02fbb9f2ea3..8f2a08388da4451475360b1751d6a4f1c72e6e5f 100644 (file)
@@ -194,7 +194,7 @@ dump_prediction (predictor, probability, bb, used)
   if (!rtl_dump_file)
     return;
 
-  while (e->flags & EDGE_FALLTHRU)
+  while (e && (e->flags & EDGE_FALLTHRU))
     e = e->succ_next;
 
   fprintf (rtl_dump_file, "  %s heuristics%s: %.1f%%",
@@ -205,9 +205,12 @@ dump_prediction (predictor, probability, bb, used)
     {
       fprintf (rtl_dump_file, "  exec ");
       fprintf (rtl_dump_file, HOST_WIDEST_INT_PRINT_DEC, bb->count);
-      fprintf (rtl_dump_file, " hit ");
-      fprintf (rtl_dump_file, HOST_WIDEST_INT_PRINT_DEC, e->count);
-      fprintf (rtl_dump_file, " (%.1f%%)", e->count * 100.0 / bb->count);
+      if (e)
+       {
+         fprintf (rtl_dump_file, " hit ");
+         fprintf (rtl_dump_file, HOST_WIDEST_INT_PRINT_DEC, e->count);
+         fprintf (rtl_dump_file, " (%.1f%%)", e->count * 100.0 / bb->count);
+       }
     }
 
   fprintf (rtl_dump_file, "\n");
index 2616ac3db634e455c0e2ccb55fe9451f095a936d..f82d3a37f650ee4c0e6308dfb4603042fe99e5e5 100644 (file)
@@ -1,3 +1,7 @@
+2003-02-20  Randolph Chung  <tausq@debian.org>
+
+       * gcc.c-torture/compile/20030220-1.c: New test.
+
 2003-02-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
 
        PR c++/9459
diff --git a/gcc/testsuite/gcc.c-torture/compile/20030220-1.c b/gcc/testsuite/gcc.c-torture/compile/20030220-1.c
new file mode 100644 (file)
index 0000000..59a03e4
--- /dev/null
@@ -0,0 +1,20 @@
+/* PR optimization/9768 */
+/* Originator: Randolph Chung <tausq@debian.org> */
+
+inline int fixfloor (long x)
+{
+  if (x >= 0)
+    return (x >> 16);
+  else
+    return ~((~x) >> 16);
+}
+
+inline int fixtoi (long x)
+{
+  return fixfloor(x) + ((x & 0x8000) >> 15);
+}
+
+int foo(long x, long y)
+{
+  return fixtoi(x*y);
+}