Index: gcc/fortran/trans-intrinsic.c =================================================================== *** gcc/fortran/trans-intrinsic.c (revision 221500) --- gcc/fortran/trans-intrinsic.c (working copy) *************** gfc_conv_intrinsic_loc (gfc_se * se, gfc *** 7080,7086 **** arg_expr = expr->value.function.actual->expr; if (arg_expr->rank == 0) ! gfc_conv_expr_reference (se, arg_expr); else gfc_conv_array_parameter (se, arg_expr, true, NULL, NULL, NULL); se->expr = convert (gfc_get_int_type (gfc_index_integer_kind), se->expr); --- 7080,7091 ---- arg_expr = expr->value.function.actual->expr; if (arg_expr->rank == 0) ! { ! if (arg_expr->symtree->n.sym->ts.type == BT_CLASS ! && !CLASS_DATA (arg_expr->symtree->n.sym)->as) ! gfc_add_component_ref (arg_expr, "_data"); ! gfc_conv_expr_reference (se, arg_expr); ! } else gfc_conv_array_parameter (se, arg_expr, true, NULL, NULL, NULL); se->expr = convert (gfc_get_int_type (gfc_index_integer_kind), se->expr);