aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-loop-jam.c
AgeCommit message (Collapse)AuthorFilesLines
2019-01-01Update copyright years.Jakub Jelinek1-1/+1
From-SVN: r267494
2018-12-05re PR tree-optimization/87360 (ICE in remove_redundant_iv_tests at ↵Jakub Jelinek1-9/+9
gcc/tree-ssa-loop-ivcanon.c:571 since r255467) PR tree-optimization/87360 * gimple-loop-jam.c (tree_loop_unroll_and_jam): On failure to analyze data dependencies, don't return false, just continue. Formatting fixes. (merge_loop_tree, bb_prevents_fusion_p, unroll_jam_possible_p, fuse_loops): Formatting fixes. * g++.dg/opt/pr87360.C: New test. * gfortran.dg/pr87360.f90: New test. From-SVN: r266820
2018-09-01re PR tree-optimization/87074 (Unroll and jam bug: O3 result differ from O2)Michael Matz1-2/+28
Fix PR87074 PR tree-optimization/87074 * gimple-loop-jam.c (unroll_jam_possible_p): Check loop exit PHIs for outer-loop uses. testsuite/ * gcc.dg/pr87074.c: New test. From-SVN: r264029
2018-01-03Update copyright years.Jakub Jelinek1-1/+1
From-SVN: r256169
2017-12-08re PR tree-optimization/83323 (186.crafty miscompares)Michael Matz1-21/+20
Fix PR83323 * gimple-loop-jam (unroll_jam_possible_p): Correct test for head-controlled loops and loop BBs. * common.opt (funroll-and-jam): Remove, instead ... (floop-unroll-and-jam): ... reuse this option. * opts.c (default_options_table): Use OPT_floop_unroll_and_jam. * doc/invoke.texi (-funroll-and-jam): Move docu to ... (-floop-unroll-and-jam): ... this option. testsuite/ * gcc.dg/pr83323.c: New test. * gcc.dg/unroll-and-jam.c: Use -floop-unroll-and-jam. From-SVN: r255514
2017-12-07Add unroll and jam passMichael Matz1-0/+569
* gimple-loop-jam.c: New file. * Makefile.in (OBJS): Add gimple-loop-jam.o. * common.opt (funroll-and-jam): New option. * opts.c (default_options_table): Add unroll-and-jam at -O3. * params.def (PARAM_UNROLL_JAM_MIN_PERCENT): New param. (PARAM_UNROLL_JAM_MAX_UNROLL): Ditto. * passes.def: Add pass_loop_jam. * timevar.def (TV_LOOP_JAM): Add. * tree-pass.h (make_pass_loop_jam): Declare. * cfgloop.c (flow_loop_tree_node_add): Add AFTER argument. * cfgloop.h (flow_loop_tree_node_add): Adjust declaration. * cfgloopmanip.c (duplicate_loop): Add AFTER argument, adjust call to flow_loop_tree_node_add. (duplicate_subloops, copy_loops_to): Append to sibling list. * cfgloopmanip.h: (duplicate_loop): Adjust declaration. * doc/invoke.texi (-funroll-and-jam): Document new option. (unroll-jam-min-percent, unroll-jam-max-unroll): Document new params. testsuite/ * gcc.dg/unroll-and-jam.c: New test. From-SVN: r255467