mirror of git://gcc.gnu.org/git/gcc.git
Correction régression pr113956.f90
This commit is contained in:
parent
35f16be313
commit
aa16c6eaf7
|
@ -2343,10 +2343,19 @@ gfc_set_descriptor (stmtblock_t *block, tree dest, tree src, gfc_expr *src_expr,
|
|||
gfc_conv_descriptor_elem_len_set (block, dest, span);
|
||||
else if (src_expr->rank != -1
|
||||
&& src_expr->ts.type == BT_CHARACTER
|
||||
&& src_expr->ts.deferred
|
||||
&& !element_size_known (dest))
|
||||
{
|
||||
tree elem_len = gfc_conv_descriptor_elem_len_get (src);
|
||||
tree src_desc = src;
|
||||
if (TREE_CODE (src_desc) == INDIRECT_REF
|
||||
&& DECL_P (TREE_OPERAND (src_desc, 0)))
|
||||
src_desc = TREE_OPERAND (src_desc, 0);
|
||||
if (DECL_P (src_desc)
|
||||
&& DECL_LANG_SPECIFIC (src_desc)
|
||||
&& GFC_DECL_SAVED_DESCRIPTOR (src_desc))
|
||||
src_desc = GFC_DECL_SAVED_DESCRIPTOR (src_desc);
|
||||
if (POINTER_TYPE_P (TREE_TYPE (src_desc)))
|
||||
src_desc = build_fold_indirect_ref_loc (input_location, src_desc);
|
||||
tree elem_len = gfc_conv_descriptor_elem_len_get (src_desc);
|
||||
gfc_conv_descriptor_elem_len_set (block, dest, elem_len);
|
||||
}
|
||||
|
||||
|
|
|
@ -9903,7 +9903,10 @@ gfc_conv_intrinsic_loc (gfc_se * se, gfc_expr * expr)
|
|||
gfc_conv_expr_reference (se, arg_expr);
|
||||
}
|
||||
else
|
||||
{
|
||||
se->bytes_strided = true;
|
||||
gfc_conv_array_parameter (se, arg_expr, true, NULL, NULL, NULL);
|
||||
}
|
||||
se->expr = convert (gfc_get_int_type (gfc_index_integer_kind), se->expr);
|
||||
|
||||
/* Create a temporary variable for loc return value. Without this,
|
||||
|
|
Loading…
Reference in New Issue