diff options
Diffstat (limited to 'libgfortran/m4/matmul.m4')
-rw-r--r-- | libgfortran/m4/matmul.m4 | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/libgfortran/m4/matmul.m4 b/libgfortran/m4/matmul.m4 index aca2da06bab..730e4d78fd3 100644 --- a/libgfortran/m4/matmul.m4 +++ b/libgfortran/m4/matmul.m4 @@ -49,15 +49,17 @@ include(iparm.m4)dnl C(I,J) = C(I,J)+A(I,K)*B(K,J) */ -extern void matmul_`'rtype_code (rtype * retarray, rtype * a, rtype * b); +extern void matmul_`'rtype_code (rtype * const restrict retarray, + rtype * const restrict a, rtype * const restrict b); export_proto(matmul_`'rtype_code); void -matmul_`'rtype_code (rtype * retarray, rtype * a, rtype * b) +matmul_`'rtype_code (rtype * const restrict retarray, + rtype * const restrict a, rtype * const restrict b) { - rtype_name *abase; - rtype_name *bbase; - rtype_name *dest; + const rtype_name * restrict abase; + const rtype_name * restrict bbase; + rtype_name * restrict dest; index_type rxstride, rystride, axstride, aystride, bxstride, bystride; index_type x, y, n, count, xcount, ycount; @@ -106,12 +108,10 @@ matmul_`'rtype_code (rtype * retarray, rtype * a, rtype * b) retarray->offset = 0; } - abase = a->data; - bbase = b->data; - dest = retarray->data; - if (retarray->dim[0].stride == 0) retarray->dim[0].stride = 1; + + /* This prevents constifying the input arguments. */ if (a->dim[0].stride == 0) a->dim[0].stride = 1; if (b->dim[0].stride == 0) @@ -177,9 +177,9 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl if (rxstride == 1 && axstride == 1 && bxstride == 1) { - rtype_name *bbase_y; - rtype_name *dest_y; - rtype_name *abase_n; + const rtype_name * restrict bbase_y; + rtype_name * restrict dest_y; + const rtype_name * restrict abase_n; rtype_name bbase_yn; if (rystride == ycount) |