aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/options.c
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2017-11-05 17:24:37 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2017-11-05 17:24:37 +0000
commitd88412fc5139a0dbecbc8e61a817a088037501f6 (patch)
treea619106d5d0f15135e88affa6a1b775ec677d5c2 /gcc/fortran/options.c
parent5233d45559d5869fe7dc9705d6c79e6538d8a2ab (diff)
downloadgcc-d88412fc5139a0dbecbc8e61a817a088037501f6.zip
gcc-d88412fc5139a0dbecbc8e61a817a088037501f6.tar.gz
gcc-d88412fc5139a0dbecbc8e61a817a088037501f6.tar.bz2
re PR fortran/82471 (Reorder loop for unfavorable index ordering in DO CONCURRENT and FORALL)
2017-11-05 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/82471 * lang.opt (ffrontend-loop-interchange): New option. (Wfrontend-loop-interchange): New option. * options.c (gfc_post_options): Handle ffrontend-loop-interchange. * frontend-passes.c (gfc_run_passes): Run optimize_namespace if flag_frontend_optimize or flag_frontend_loop_interchange are set. (optimize_namespace): Run functions according to flags set; also call index_interchange. (ind_type): New function. (has_var): New function. (index_cost): New function. (loop_comp): New function. 2017-11-05 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/82471 * gfortran.dg/loop_interchange_1.f90: New test. From-SVN: r254430
Diffstat (limited to 'gcc/fortran/options.c')
-rw-r--r--gcc/fortran/options.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
index f7bbd7f..0ee6b78 100644
--- a/gcc/fortran/options.c
+++ b/gcc/fortran/options.c
@@ -417,6 +417,11 @@ gfc_post_options (const char **pfilename)
if (flag_frontend_optimize == -1)
flag_frontend_optimize = optimize;
+ /* Same for front end loop interchange. */
+
+ if (flag_frontend_loop_interchange == -1)
+ flag_frontend_loop_interchange = optimize;
+
if (flag_max_array_constructor < 65535)
flag_max_array_constructor = 65535;