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