diff options
Diffstat (limited to 'libgfortran/m4/transpose.m4')
-rw-r--r-- | libgfortran/m4/transpose.m4 | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/libgfortran/m4/transpose.m4 b/libgfortran/m4/transpose.m4 index fbc49501097..5fd6acfb228 100644 --- a/libgfortran/m4/transpose.m4 +++ b/libgfortran/m4/transpose.m4 @@ -39,6 +39,23 @@ void assert (GFC_DESCRIPTOR_RANK (source) == 2); + if (ret->data == NULL) + { + assert (GFC_DESCRIPTOR_RANK (ret) == 2); + assert (ret->dtype == source->dtype); + + ret->dim[0].lbound = 0; + ret->dim[0].ubound = source->dim[1].ubound - source->dim[1].lbound; + ret->dim[0].stride = 1; + + ret->dim[1].lbound = 0; + ret->dim[1].ubound = source->dim[0].ubound - source->dim[0].lbound; + ret->dim[1].stride = ret->dim[0].ubound+1; + + ret->data = internal_malloc (sizeof (rtype_name) * size0 (ret)); + ret->base = 0; + } + if (ret->dim[0].stride == 0) ret->dim[0].stride = 1; if (source->dim[0].stride == 0) |