https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70159
--- Comment #13 from Richard Biener <rguenth at gcc dot gnu.org> --- Author: rguenth Date: Tue Jul 12 13:32:04 2016 New Revision: 238242 URL: https://gcc.gnu.org/viewcvs?rev=238242&root=gcc&view=rev Log: 2016-07-12 Steven Bosscher <ste...@gcc.gnu.org> Richard Biener <rguent...@suse.de> PR tree-optimization/23286 PR tree-optimization/70159 * doc/invoke.texi: Document -fcode-hoisting. * common.opt (fcode-hoisting): New flag. * opts.c (default_options_table): Enable -fcode-hoisting at -O2+. * tree-ssa-pre.c (pre_stats): Add hoist_insert. (do_regular_insertion): Rename to ... (do_pre_regular_insertion): ... this and amend general comments on insertion strathegy. (do_partial_partial_insertion): Rename to ... (do_pre_partial_partial_insertion): ... this. (do_hoist_insertion): New function. (insert_aux): Take flags on whether to do PRE and/or hoist insertion and call do_hoist_insertion properly. (insert): Adjust. (pass_pre::gate): Enable also if -fcode-hoisting is enabled. (pass_pre::execute): Register hoist_insert stats. * gcc.dg/tree-ssa/ssa-pre-11.c: Disable code hosting. * gcc.dg/tree-ssa/ssa-pre-27.c: Likewise. * gcc.dg/tree-ssa/ssa-pre-28.c: Likewise. * gcc.dg/tree-ssa/ssa-pre-2.c: Likewise. * gcc.dg/tree-ssa/pr35286.c: Likewise. * gcc.dg/tree-ssa/pr35287.c: Likewise. * gcc.dg/hoist-register-pressure-1.c: Likewise. * gcc.dg/hoist-register-pressure-2.c: Likewise. * gcc.dg/hoist-register-pressure-3.c: Likewise. * gcc.dg/pr51879-12.c: Likewise. * gcc.dg/strlenopt-9.c: Likewise. * gcc.dg/tree-ssa/pr47392.c: Likewise. * gcc.dg/tree-ssa/pr68619-4.c: Likewise. * gcc.dg/tree-ssa/split-path-5.c: Likewise. * gcc.dg/tree-ssa/slsr-35.c: Likewise. * gcc.dg/tree-ssa/slsr-36.c: Likewise. * gcc.dg/tree-ssa/loadpre3.c: Adjust so hosting doesn't apply. * gcc.dg/tree-ssa/pr43491.c: Scan optimized dump for desired result. * gcc.dg/tree-ssa/ssa-pre-31.c: Adjust expected outcome for hoisting. * gcc.dg/tree-ssa/ssa-hoist-1.c: New testcase. * gcc.dg/tree-ssa/ssa-hoist-2.c: New testcase. * gcc.dg/tree-ssa/ssa-hoist-3.c: New testcase. * gcc.dg/tree-ssa/ssa-hoist-4.c: New testcase. * gcc.dg/tree-ssa/ssa-hoist-5.c: New testcase. * gcc.dg/tree-ssa/ssa-hoist-6.c: New testcase. * gfortran.dg/pr43984.f90: Adjust expected outcome. Added: trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-hoist-1.c trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-hoist-2.c trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-hoist-3.c trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-hoist-4.c trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-hoist-6.c Modified: trunk/gcc/ChangeLog trunk/gcc/common.opt trunk/gcc/doc/invoke.texi trunk/gcc/opts.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.dg/hoist-register-pressure-1.c trunk/gcc/testsuite/gcc.dg/hoist-register-pressure-2.c trunk/gcc/testsuite/gcc.dg/hoist-register-pressure-3.c trunk/gcc/testsuite/gcc.dg/pr51879-12.c trunk/gcc/testsuite/gcc.dg/strlenopt-9.c trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre3.c trunk/gcc/testsuite/gcc.dg/tree-ssa/pr35286.c trunk/gcc/testsuite/gcc.dg/tree-ssa/pr35287.c trunk/gcc/testsuite/gcc.dg/tree-ssa/pr43491.c trunk/gcc/testsuite/gcc.dg/tree-ssa/pr47392.c trunk/gcc/testsuite/gcc.dg/tree-ssa/pr68619-4.c trunk/gcc/testsuite/gcc.dg/tree-ssa/slsr-35.c trunk/gcc/testsuite/gcc.dg/tree-ssa/slsr-36.c trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-11.c trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-2.c trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-27.c trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-28.c trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-31.c trunk/gcc/testsuite/gfortran.dg/pr43984.f90 trunk/gcc/tree-ssa-pre.c