Hello Thomas,

first, thanks for working on an inline version of matmul. (I wonder
whether there is a PR which would be fixed by it; presumably yes.
Secondly, I wonder whether we then still need the version in the
library; if not, can you when the final patch is in update 
https://gcc.gnu.org/wiki/LibgfortranAbiCleanup ?)


Thomas Koenig wrote:
> Question: What to do about run-time bounds checking?  I am leaning
> towards making an intrinsic subroutine which can not be called
> by the user, and have that translate to runtime_error_at.

That sounds reasonable. Have a look at STRIDE which is an existing
only internally available intrinsic:

class.c:
  block->expr2 = gfc_build_intrinsic_call (sub_ns, GFC_ISYM_STRIDE, "stride",

intrinsic.c-  /* Obtain the stride for a given dimensions; to be used only 
internally.
intrinsic.c-     "make_from_module" makes it inaccessible for external users.  
*/
intrinsic.c:  add_sym_2 (GFC_PREFIX ("stride"), GFC_ISYM_STRIDE, CLASS_INQUIRY, 
ACTUAL_NO,
intrinsic.c-         BT_INTEGER, gfc_index_integer_kind, GFC_STD_GNU,
intrinsic.c-         NULL, NULL, gfc_resolve_stride,
intrinsic.c-         ar, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, OPTIONAL);
intrinsic.c-  make_from_module();

Except that you want to have a subroutine and not a function.

And then you just have to handle it in trans-intrinsic.c: search for the 
GFC_ISY_* of
a subroutine (followed by a colon), create a small function in which you call
gfc_trans_runtime_error.

Tobias

Reply via email to