On 02/02/2017 01:29 PM, Jan Hubicka wrote:
Hi,
this patches fixes profile updating in the ifcombine.  This is not hard to do
and ifcombine is #2 profile update offender out of tree passes (#1 is the
vectorizer).

I think this counts as a regression, becuase one can trigger arbitrarily
bad profile after ifconversion and defnitly construct a testcase where this
will cause us optimize for size where we optimized for speed previously.

Bootstrapped/regtested x86_64-linux. Will commit it tomorrow (after testers
pick up the threading fix) unless there are complains.

        * gcc.dg/tree-ssa/ssa-ifcombine-1.c: Check for no profile mismatches.
        * gcc.dg/tree-ssa/ssa-ifcombine-2.c: Check for no profile mismatches.
        * gcc.dg/tree-ssa/ssa-ifcombine-3.c: Check for no profile mismatches.
        * gcc.dg/tree-ssa/ssa-ifcombine-4.c: Check for no profile mismatches.
        * gcc.dg/tree-ssa/ssa-ifcombine-5.c: Check for no profile mismatches.
        * gcc.dg/tree-ssa/ssa-ifcombine-6.c: Check for no profile mismatches.
        * gcc.dg/tree-ssa/ssa-ifcombine-7.c: Check for no profile mismatches.
        * gcc.dg/tree-ssa/ssa-ifcombine-8.c: Check for no profile mismatches.
        * gcc.dg/tree-ssa/ssa-ifcombine-9.c: Check for no profile mismatches.
        * gcc.dg/tree-ssa/ssa-ifcombine-10.c: Check for no profile mismatches.
        * gcc.dg/tree-ssa/ssa-ifcombine-11.c: Check for no profile mismatches.
        * gcc.dg/tree-ssa/ssa-ifcombine-12.c: Check for no profile mismatches.
        * gcc.dg/tree-ssa/ssa-ifcombine-13.c: Check for no profile mismatches.

        * tree-ssa-ifcombine.c (update_profile_after_ifcombine): New function.
        (ifcombine_ifandif): Use it.

Index: testsuite/gcc.dg/tree-ssa/threadbackward-1.c
===================================================================
--- testsuite/gcc.dg/tree-ssa/threadbackward-1.c        (revision 0)
+++ testsuite/gcc.dg/tree-ssa/threadbackward-1.c        (working copy)
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-ethread" } */
+char *c;
+int t()
+{
+  for (int i=0;i<5000;i++)
+    c[i]=i;
+}
+/* { dg-final { scan-tree-dump-times "Registering FSM jump thread" 1 
"ethread"} } */
Seems like this is unrelated to fixing profile updates in ifcombine. If you want the new test it's probably best done in another independent patch :-)


Index: tree-ssa-ifcombine.c
===================================================================
--- tree-ssa-ifcombine.c        (revision 245134)
+++ tree-ssa-ifcombine.c        (working copy)
@@ -332,6 +332,51 @@ recognize_bits_test (gcond *cond, tree *
   return true;
 }

+
+/* Update profile after code in outer_cond_bb was adjuted so
s/adjuted/adjusted/

OK with the nit fixed.

jeff

Reply via email to