diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2017-08-07 16:43:05 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2017-08-07 16:43:05 +0000 |
commit | 950a884bcb5a0123791df98679a2b6367b4e2beb (patch) | |
tree | 905385db157c5257f02a6ab7e4910db31dd1c8ae /gcc/fortran/options.c | |
parent | ebeeb49c4437466db2c9b706b541da47e99f1fe9 (diff) | |
download | gcc-950a884bcb5a0123791df98679a2b6367b4e2beb.zip gcc-950a884bcb5a0123791df98679a2b6367b4e2beb.tar.gz gcc-950a884bcb5a0123791df98679a2b6367b4e2beb.tar.bz2 |
re PR fortran/68829 (Segfaults with -Ofast due to large array on stack)
2017-08-07 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/68829
* doc/invoke.texi: Document change in behvaior for -Ofast for
Fortran.
2017-08-07 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/68829
PR fortran/81701
* options.c: Make -Ofast honor -fmax-stack-var-size.
* invoke.texi: Document change.
2017-08-07 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/68829
PR fortran/81701
* gfortran.dg/o_fast_stacksize.90: New test.
From-SVN: r250923
Diffstat (limited to 'gcc/fortran/options.c')
-rw-r--r-- | gcc/fortran/options.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c index 1af76aa..283c835 100644 --- a/gcc/fortran/options.c +++ b/gcc/fortran/options.c @@ -235,7 +235,9 @@ gfc_post_options (const char **pfilename) if (flag_protect_parens == -1) flag_protect_parens = !optimize_fast; - if (flag_stack_arrays == -1) + /* -Ofast sets implies -fstack-arrays unless an explicit size is set for + stack arrays. */ + if (flag_stack_arrays == -1 && flag_max_stack_var_size == -2) flag_stack_arrays = optimize_fast; /* By default, disable (re)allocation during assignment for -std=f95, @@ -380,6 +382,10 @@ gfc_post_options (const char **pfilename) flag_max_stack_var_size = -1; } + /* Set flag_stack_arrays correctly. */ + if (flag_stack_arrays == -1) + flag_stack_arrays = 0; + /* Set default. */ if (flag_max_stack_var_size == -2) flag_max_stack_var_size = 32768; |