re PR fortran/51448 (Compiler crash when assigning floating point values of different kinds)

2011-12-08  Tobias Burnus  <burnus@net-b.de>

        PR fortran/51448
        * fortran/trans-array.c (get_std_lbound): Fix handling of
        conversion functions.

2011-12-08  Tobias Burnus  <burnus@net-b.de>

        PR fortran/51448
        * gfortran.dg/realloc_on_assign_8.f90: New.

From-SVN: r182131
This commit is contained in:
Tobias Burnus 2011-12-08 19:51:28 +01:00 committed by Tobias Burnus
parent d62023228d
commit e48cc39155
4 changed files with 38 additions and 10 deletions

View File

@ -1,3 +1,9 @@
2011-12-08 Tobias Burnus <burnus@net-b.de>
PR fortran/51448
* fortran/trans-array.c (get_std_lbound): Fix handling of
conversion functions.
2011-12-08 Toon Moene <toon@moene.org>
PR fortran/51310

View File

@ -7428,7 +7428,16 @@ get_std_lbound (gfc_expr *expr, tree desc, int dim, bool assumed_size)
gfc_array_index_type, cond,
lbound, gfc_index_one_node);
}
else if (expr->expr_type == EXPR_VARIABLE)
if (expr->expr_type == EXPR_FUNCTION)
{
/* A conversion function, so use the argument. */
gcc_assert (expr->value.function.isym
&& expr->value.function.isym->conversion);
expr = expr->value.function.actual->expr;
}
if (expr->expr_type == EXPR_VARIABLE)
{
tmp = TREE_TYPE (expr->symtree->n.sym->backend_decl);
for (ref = expr->ref; ref; ref = ref->next)
@ -7441,15 +7450,6 @@ get_std_lbound (gfc_expr *expr, tree desc, int dim, bool assumed_size)
}
return GFC_TYPE_ARRAY_LBOUND(tmp, dim);
}
else if (expr->expr_type == EXPR_FUNCTION)
{
/* A conversion function, so use the argument. */
expr = expr->value.function.actual->expr;
if (expr->expr_type != EXPR_VARIABLE)
return gfc_index_one_node;
desc = TREE_TYPE (expr->symtree->n.sym->backend_decl);
return get_std_lbound (expr, desc, dim, assumed_size);
}
return gfc_index_one_node;
}

View File

@ -1,3 +1,8 @@
2011-12-07 Tobias Burnus <burnus@net-b.de>
PR fortran/51448
* gfortran.dg/realloc_on_assign_8.f90: New.
2011-12-08 Teresa Johnson <tejohnson@google.com>
* gcc.target/i386/movdi-rex64.c: Remove unnecessary

View File

@ -0,0 +1,17 @@
! { dg-do compile }
!
! PR fortran/51448
!
! Contribued by François Willot
!
PROGRAM MAIN
IMPLICIT NONE
TYPE mytype
REAL b(2)
END TYPE mytype
TYPE(mytype) a
DOUBLE PRECISION, ALLOCATABLE :: x(:)
ALLOCATE(x(2))
a%b=0.0E0
x=a%b
END