On Mon, Oct 28, 2013 at 10:51 PM, Jeff Law <l...@redhat.com> wrote: > On 10/27/13 12:55, Andrew Pinski wrote: >> >> Here is my latest patch which adds the testcases from Zhenqiang's >> patch and fixes item 1 and 2. >> >> OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions. >> >> Thanks, >> Andrew Pinski >> >> ChangeLog: >> * tree-ssa-ifcombine.c: Include rtl.h and tm_p.h. >> (ifcombine_ifandif): Handle cases where >> maybe_fold_and_comparisons fails, combining the branches >> anyways. >> (tree_ssa_ifcombine): Inverse the order of >> the basic block walk, increases the number of combinings. >> * gimple.h (gsi_start_nondebug_after_labels_bb): New function. >> >> >> testsuite/ChangeLog: >> >> * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-1.c: New test case. >> * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-2.c: New test case. >> * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-3.c: New test case. >> * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-4.c: New test case. >> * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-5.c: New test case. >> * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-6.c: New test case. >> >> * gcc.dg/tree-ssa/phi-opt-9.c: Use a function call to prevent >> conditional move to be used. >> * gcc.dg/tree-ssa/ssa-dom-thread-3.c: Remove check for "one or more >> intermediate". > > I don't be able to look at this in any depth tonight. However, I would ask > that you pass along the dump file for ssa-dom-thread-3.c so that I can > evaluate the correctness of your change better.
We no longer jump thread one case as we have: <bb 2>: var_3 = var_1(D)->ssa_name.var; _4 = var_1(D)->base.code; if (_4 == 1) goto <bb 3>; else goto <bb 5>; ... <bb 5>: _6 = var_3->base.code; _13 = _4 != 1; _14 = _6 != 0; _12 = _13 & _14; if (_12 != 0) goto <bb 8>; else goto <bb 6>; Attached is the full dump too. Thanks, Andrew Pinski > > Thanks, > jeff >
ssa-dom-thread-3.c.077t.dom1
Description: Binary data