aboutsummaryrefslogtreecommitdiff
path: root/gcc/toplev.c
diff options
context:
space:
mode:
authorguojiufu <guojiufu@linux.ibm.com>2020-05-28 13:42:23 +0800
committerguojiufu <guojiufu@linux.ibm.com>2020-06-07 17:35:01 +0800
commit71489d8e7572388c6e9528a45e4942b7c7b67e4f (patch)
treea4b5cb277348fe0df2f53f9ab0de532dd4ad8d9d /gcc/toplev.c
parent905ba62ec96f8469c1085861d9ceec58fbee5709 (diff)
downloadgcc-71489d8e7572388c6e9528a45e4942b7c7b67e4f.zip
gcc-71489d8e7572388c6e9528a45e4942b7c7b67e4f.tar.gz
gcc-71489d8e7572388c6e9528a45e4942b7c7b67e4f.tar.bz2
Introduce flag_cunroll_grow_size for cunroll
Currently GIMPLE complete unroller(cunroll) is checking flag_unroll_loops and flag_peel_loops to see if allow size growth. Beside affects curnoll, flag_unroll_loops also controls RTL unroler. To have more freedom to control cunroll and RTL unroller, this patch introduces flag_cunroll_grow_size. With this patch, we can control cunroll and RTL unroller indepently. gcc/ChangeLog 2020-06-07 Jiufu Guo <guojiufu@linux.ibm.com> * common.opt (flag_cunroll_grow_size): New flag. * toplev.c (process_options): Set flag_cunroll_grow_size. * tree-ssa-loop-ivcanon.c (pass_complete_unroll::execute): Use flag_cunroll_grow_size.
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r--gcc/toplev.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 1a75485..95eea63 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -1482,6 +1482,11 @@ process_options (void)
if (flag_unroll_all_loops)
flag_unroll_loops = 1;
+ /* Allow cunroll to grow size accordingly. */
+ if (flag_cunroll_grow_size == AUTODETECT_VALUE)
+ flag_cunroll_grow_size
+ = flag_unroll_loops || flag_peel_loops || optimize >= 3;
+
/* web and rename-registers help when run after loop unrolling. */
if (flag_web == AUTODETECT_VALUE)
flag_web = flag_unroll_loops;