[Patch, fortran] PR 37131, inline matmul
Thomas Koenig
tkoenig@netcologne.de
Wed May 6 20:26:00 GMT 2015
Hi Mikael,
thanks for the review. I have committed the following, which took
your remarks into account (plus an additional test case, as obvious).
Regards
Thomas
2015-05-06 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/37131
* gfortran.h (gfc_isym_id): Add GFC_ISYM_FE_RUNTIME_ERROR.
(gfc_intrinsic_sym): Add vararg.
* intrinsic.h (gfc_check_fe_runtime_error): Add prototype.
(gfc_resolve_re_runtime_error): Likewise.
Add prototype for gfc_is_reallocatable_lhs.
* trans-array.h (gfc_is_reallocatable_lhs): Remove prototype.
* check.c (gfc_check_fe_runtime_error): New function.
* intrinsic.c (add_sym_1p): New function.
(make_vararg): New function.
(add_subroutines): Add fe_runtime_error.
(gfc_intrinsic_sub_interface): Skip sorting for variable number
of arguments.
* iresolve.c (gfc_resolve_fe_runtime_error): New function.
* lang.opt (inline-matmul-limit): New option.
(gfc_post_options): If no inline matmul limit has been set and
BLAS is called externally, use the BLAS limit.
* frontend-passes.c: Include intrinsic.h.
(var_num): New global counter for naming temporary variablbles.
(matrix_case): Enum for differentiating the different matmul
cases.
(realloc_string_callback): Add "trim" to the variable name.
(create_var): Add optional argument vname as part of the name.
Use var_num. Set dimension of result correctly. Split off block
creation into
(insert_block): New function.
(cfe_expr_0): Use "fcn" as part of temporary variable name.
(optimize_namesapce): Also set gfc_current_ns. Call
inline_matmul_assign.
(combine_array_constructor): Use "constr" as part of
temporary name.
(get_array_inq_function): New function.
(build_logical_expr): New function.
(get_operand): new function.
(inline_limit_check): New function.
(runtime_error_ne): New function.
(matmul_lhs_realloc): New function.
(is_functino_or_op): New function.
(has_function_or_op): New function.
(freeze_expr): New function.
(freeze_references): New function.
(convert_to_index_kind): New function.
(create_do_loop): New function.
(get_size_m1): New function.
(scalarized_expr): New function.
(inline_matmul_assign): New function.
* simplify.c (simplify_bound): Simplify the case of the
lower bound of an assumed-shape argument.
2015-05-06 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/37131
* gfortran.dg/dependency_26.f90: Add option to suppress inlining
matmul.
* gfortran.dg/function_optimize_1.f90: Likewise.
* gfortran.dg/function_optimize_2.f90: Likewise.
* gfortran.dg/function_optimize_5.f90: Likewise.
* gfortran.dg/function_optimize_7.f90: Likewise.
* gfortran.dg/inline_matmul_1.f90: New test.
* gfortran.dg/inline_matmul_2.f90: New test.
* gfortran.dg/inline_matmul_3.f90: New test.
* gfortran.dg/inline_matmul_4.f90: New test.
* gfortran.dg/inline_matmul_5.f90: New test.
* gfortran.dg/inline_matmul_6.f90: New test.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: matmul-19.diff
Type: text/x-patch
Size: 63410 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20150506/6563559f/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: inline_matmul_6.f90
Type: text/x-fortran
Size: 1190 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20150506/6563559f/attachment-0001.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: inline_matmul_1.f90
Type: text/x-fortran
Size: 5747 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20150506/6563559f/attachment-0002.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: inline_matmul_2.f90
Type: text/x-fortran
Size: 2049 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20150506/6563559f/attachment-0003.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: inline_matmul_3.f90
Type: text/x-fortran
Size: 2027 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20150506/6563559f/attachment-0004.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: inline_matmul_4.f90
Type: text/x-fortran
Size: 2210 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20150506/6563559f/attachment-0005.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: inline_matmul_5.f90
Type: text/x-fortran
Size: 243 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20150506/6563559f/attachment-0006.bin>
More information about the Fortran
mailing list