Comments
Patch
2012-07-15 Tobias Burnus <burnus@net-b.de>
* trans-intrinsic.c (gfc_conv_associated): Compare sm
instead of stride.
2012-07-15 Tobias Burnus <burnus@net-b.de>
* intrinsics/associated.c (associated): Compare sm
instead of stride.
===================================================================
@@ -5849,19 +5849,19 @@ gfc_conv_associated (gfc_se *se, gfc_exp
se->expr = fold_build2_loc (input_location, TRUTH_AND_EXPR,
boolean_type_node, tmp, tmp2);
}
else
{
/* An array pointer of zero length is not associated if target is
present. */
arg1se.descriptor_only = 1;
gfc_conv_expr_lhs (&arg1se, arg1->expr);
- tmp = gfc_conv_descriptor_stride_get (arg1se.expr,
+ tmp = gfc_conv_descriptor_sm_get (arg1se.expr,
gfc_rank_cst[arg1->expr->rank - 1]);
nonzero_arraylen = fold_build2_loc (input_location, NE_EXPR,
boolean_type_node, tmp,
build_int_cst (TREE_TYPE (tmp), 0));
/* A pointer to an array, call library function _gfor_associated. */
gcc_assert (ss2 != gfc_ss_terminator);
arg1se.want_pointer = 1;
gfc_conv_expr_descriptor (&arg1se, arg1->expr, ss1);
===================================================================
@@ -42,17 +42,17 @@ associated (const gfc_array_void *pointe
rank = GFC_DESCRIPTOR_RANK (pointer);
for (n = 0; n < rank; n++)
{
long extent;
extent = GFC_DESCRIPTOR_EXTENT(pointer,n);
if (extent != GFC_DESCRIPTOR_EXTENT(target,n))
return 0;
- if (GFC_DESCRIPTOR_STRIDE(pointer,n) != GFC_DESCRIPTOR_STRIDE(target,n) && extent != 1)
+ if (GFC_DESCRIPTOR_SM (pointer,n) != GFC_DESCRIPTOR_SM (target,n) && extent != 1)
return 0;
if (extent <= 0)
return 0;
}
return 1;
}