https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81303
--- Comment #11 from amker at gcc dot gnu.org --- Author: amker Date: Thu Dec 7 18:03:53 2017 New Revision: 255472 URL: https://gcc.gnu.org/viewcvs?rev=255472&root=gcc&view=rev Log: PR tree-optimization/81303 * Makefile.in (gimple-loop-interchange.o): New object file. * common.opt (floop-interchange): Reuse the option from graphite. * doc/invoke.texi (-floop-interchange): Ditto. New document for -floop-interchange and mention it for -O3. * opts.c (default_options_table): Enable -floop-interchange at -O3. * gimple-loop-interchange.cc: New file. * params.def (PARAM_LOOP_INTERCHANGE_MAX_NUM_STMTS): New parameter. (PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): New parameter. * passes.def (pass_linterchange): New pass. * timevar.def (TV_LINTERCHANGE): New time var. * tree-pass.h (make_pass_linterchange): New declaration. * tree-ssa-loop-ivcanon.c (create_canonical_iv): Change to external interchange. Record IV before/after increment in new parameters. * tree-ssa-loop-ivopts.h (create_canonical_iv): New declaration. * tree-vect-loop.c (vect_is_simple_reduction): Factor out reduction path check into... (check_reduction_path): ...New function here. * tree-vectorizer.h (check_reduction_path): New declaration. gcc/testsuite * gcc.dg/tree-ssa/loop-interchange-1.c: New test. * gcc.dg/tree-ssa/loop-interchange-1b.c: New test. * gcc.dg/tree-ssa/loop-interchange-2.c: New test. * gcc.dg/tree-ssa/loop-interchange-3.c: New test. * gcc.dg/tree-ssa/loop-interchange-4.c: New test. * gcc.dg/tree-ssa/loop-interchange-5.c: New test. * gcc.dg/tree-ssa/loop-interchange-6.c: New test. * gcc.dg/tree-ssa/loop-interchange-7.c: New test. * gcc.dg/tree-ssa/loop-interchange-8.c: New test. * gcc.dg/tree-ssa/loop-interchange-9.c: New test. * gcc.dg/tree-ssa/loop-interchange-10.c: New test. * gcc.dg/tree-ssa/loop-interchange-11.c: New test. * gcc.dg/tree-ssa/loop-interchange-12.c: New test. * gcc.dg/tree-ssa/loop-interchange-13.c: New test. Added: trunk/gcc/gimple-loop-interchange.cc trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-1.c trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-10.c trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-11.c trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-12.c trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-13.c trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-1b.c trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-2.c trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-3.c trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-4.c trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-5.c trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-6.c trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-7.c trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-8.c trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-9.c Modified: trunk/gcc/ChangeLog trunk/gcc/Makefile.in trunk/gcc/common.opt trunk/gcc/doc/invoke.texi trunk/gcc/opts.c trunk/gcc/params.def trunk/gcc/passes.def trunk/gcc/testsuite/ChangeLog trunk/gcc/timevar.def trunk/gcc/tree-pass.h trunk/gcc/tree-ssa-loop-ivcanon.c trunk/gcc/tree-ssa-loop-ivopts.h trunk/gcc/tree-vect-loop.c trunk/gcc/tree-vectorizer.h