diff options
Diffstat (limited to 'libgfortran/intrinsics/associated.c')
-rw-r--r-- | libgfortran/intrinsics/associated.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/libgfortran/intrinsics/associated.c b/libgfortran/intrinsics/associated.c index 0d32fd7d002..dc1da1df6f6 100644 --- a/libgfortran/intrinsics/associated.c +++ b/libgfortran/intrinsics/associated.c @@ -48,10 +48,12 @@ associated (const gfc_array_void *pointer, const gfc_array_void *target) rank = GFC_DESCRIPTOR_RANK (pointer); for (n = 0; n < rank; n++) { - if (pointer->dim[n].stride != target->dim[n].stride) + long diff; + diff = pointer->dim[n].ubound - pointer->dim[n].lbound; + + if (diff != (target->dim[n].ubound - target->dim[n].lbound)) return 0; - if ((pointer->dim[n].ubound - pointer->dim[n].lbound) - != (target->dim[n].ubound - target->dim[n].lbound)) + if (pointer->dim[n].stride != target->dim[n].stride && diff != 0) return 0; if (pointer->dim[n].ubound < pointer->dim[n].lbound) return 0; |