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:
parent
d62023228d
commit
e48cc39155
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
17
gcc/testsuite/gfortran.dg/realloc_on_assign_8.f90
Normal file
17
gcc/testsuite/gfortran.dg/realloc_on_assign_8.f90
Normal 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
|
Loading…
Reference in New Issue
Block a user