summaryrefslogtreecommitdiffstats
path: root/libgfortran/intrinsics/associated.c
diff options
context:
space:
mode:
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>2008-03-28 13:47:06 +0000
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>2008-03-28 13:47:06 +0000
commit8ccc97892b4944cb4ca014c9ae4c8d18847fc918 (patch)
treebc7075222c4580d1b29a61956a7d5b16553ba268 /libgfortran/intrinsics/associated.c
parent11fcc8c48e3186e795d699c628bb50a4f60dacbc (diff)
downloadppe42-gcc-8ccc97892b4944cb4ca014c9ae4c8d18847fc918.tar.gz
ppe42-gcc-8ccc97892b4944cb4ca014c9ae4c8d18847fc918.zip
2008-03-28 Tobias Burnus <burnus@net-b.de>
PR fortran/35721 * intrinsics/associated.c (associated): Ignore different stride of pointer vs. target if only one element is referred. 2008-03-28 Tobias Burnus <burnus@net-b.de> PR fortran/35721 * gfortran.dg/associated_target_2.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@133684 138bc75d-0d04-0410-961f-82ee72b054a4
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;
OpenPOWER on IntegriCloud