summaryrefslogtreecommitdiff
path: root/libgfortran/intrinsics/associated.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgfortran/intrinsics/associated.c')
-rw-r--r--libgfortran/intrinsics/associated.c8
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;