[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