+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
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
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%%",
{
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");
+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
--- /dev/null
+/* 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);
+}