[Patch, fortran] PR 37131, inline matmul
Thomas Koenig
tkoenig@netcologne.de
Tue May 5 06:26:00 GMT 2015
Hello world,
this is an update of the matmul inline patch. The only difference to
the last version is that it has the ubound simplification taken out.
Any further comments? OK for trunk?
Thomas
2015-05-05 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/37131
* gfortran.h (gfc_isym_id): Add GFC_ISYM_FE_RUNTIME_ERROR.
(gfc_array_spec): Add resolved flag.
(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.
* array.c (gfc_resolve_array_spec): Do not resolve if it has
already been resolved.
* 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-05 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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: matmul-18.diff
Type: text/x-patch
Size: 48387 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20150505/f1463b4a/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: inline_matmul_1.f90
Type: text/x-fortran
Size: 5699 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20150505/f1463b4a/attachment-0001.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/gcc-patches/attachments/20150505/f1463b4a/attachment-0002.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/gcc-patches/attachments/20150505/f1463b4a/attachment-0003.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/gcc-patches/attachments/20150505/f1463b4a/attachment-0004.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/gcc-patches/attachments/20150505/f1463b4a/attachment-0005.bin>
More information about the Gcc-patches
mailing list