On Mon, Oct 28, 2013 at 10:51 PM, Jeff Law <[email protected]> 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
