diff options
author | Richard Biener <rguenther@suse.de> | 2019-10-14 14:03:35 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-10-14 14:03:35 +0000 |
commit | fc2d730302da5cdf340a5100882337a807097f47 (patch) | |
tree | 65f3e0e6394e85f54af41bfd50cfafb1c0fc8c59 /gcc/loop-invariant.c | |
parent | d2317d50ae2402e5335f2ed807a166359565566b (diff) |
re PR middle-end/92046 (Command line options (that are per-functions) are affecting --params which are global.)
2019-10-14 Richard Biener <rguenther@suse.de>
PR middle-end/92046
* dse.c (scan_insn): Use param max_active_local_stores.
(dse_step1): Get PARAM_MAX_DSE_ACTIVE_LOCAL_STORES and adjust
based on optimization level.
* loop-invariant.c (move_loop_invariants): Adjust
LOOP_INVARIANT_MAX_BBS_IN_LOOP based on optimization level.
* opts.c (default_options_optimization): Do not adjust
PARAM_MAX_DSE_ACTIVE_LOCAL_STORES and
LOOP_INVARIANT_MAX_BBS_IN_LOOP here.
From-SVN: r276963
Diffstat (limited to 'gcc/loop-invariant.c')
-rw-r--r-- | gcc/loop-invariant.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/loop-invariant.c b/gcc/loop-invariant.c index d54cca41737..ef46c8aea22 100644 --- a/gcc/loop-invariant.c +++ b/gcc/loop-invariant.c @@ -2276,9 +2276,13 @@ move_loop_invariants (void) FOR_EACH_LOOP (loop, LI_FROM_INNERMOST) { curr_loop = loop; - /* move_single_loop_invariants for very large loops - is time consuming and might need a lot of memory. */ - if (loop->num_nodes <= (unsigned) LOOP_INVARIANT_MAX_BBS_IN_LOOP) + /* move_single_loop_invariants for very large loops is time consuming + and might need a lot of memory. For -O1 only do loop invariant + motion for very small loops. */ + unsigned max_bbs = LOOP_INVARIANT_MAX_BBS_IN_LOOP; + if (optimize < 2) + max_bbs /= 10; + if (loop->num_nodes <= max_bbs) move_single_loop_invariants (loop); } |