aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/options.c
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2017-02-26 13:22:43 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2017-02-26 13:22:43 +0000
commitc7b608a9f7d5785714e9d46548ee0f5f85b109be (patch)
tree9563b838df164709ffbd08a5b4dff1b70a81dc31 /gcc/fortran/options.c
parent462a7b568542e2dabd2aa6632976d47a3780deb1 (diff)
downloadgcc-c7b608a9f7d5785714e9d46548ee0f5f85b109be.zip
gcc-c7b608a9f7d5785714e9d46548ee0f5f85b109be.tar.gz
gcc-c7b608a9f7d5785714e9d46548ee0f5f85b109be.tar.bz2
re PR libfortran/51119 (MATMUL slow for large matrices)
2017-02-26 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/51119 * options.c (gfc_post_options): Set default limit for matmul inlining to 30. * invoke.texi: Document change. 2017-02-26 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/51119 * gfortran.dg/inline_matmul_1.f90: Scan optimized dump instead of original. * gfortran.dg/inline_matmul_11.f90: Likewise. * gfortran.dg/inline_matmul_9.f90: Likewise. * gfortran.dg/matmul_13.f90: New test. * gfortran.dg/matmul_14.f90: New test. From-SVN: r245745
Diffstat (limited to 'gcc/fortran/options.c')
-rw-r--r--gcc/fortran/options.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
index dc8df5b..1af76aa 100644
--- a/gcc/fortran/options.c
+++ b/gcc/fortran/options.c
@@ -388,10 +388,16 @@ gfc_post_options (const char **pfilename)
if (!flag_automatic)
flag_max_stack_var_size = 0;
- /* If we call BLAS directly, only inline up to the BLAS limit. */
+ /* If the user did not specify an inline matmul limit, inline up to the BLAS
+ limit or up to 30 if no external BLAS is specified. */
- if (flag_external_blas && flag_inline_matmul_limit < 0)
- flag_inline_matmul_limit = flag_blas_matmul_limit;
+ if (flag_inline_matmul_limit < 0)
+ {
+ if (flag_external_blas)
+ flag_inline_matmul_limit = flag_blas_matmul_limit;
+ else
+ flag_inline_matmul_limit = 30;
+ }
/* Optimization implies front end optimization, unless the user
specified it directly. */