re PR fortran/85896 (ICE in gfc_convert_constant(): Unexpected type)
2018-10-30 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/85896 * simplify.c (simplify_min_max): Do not convert the type of the return expression. 2018-10-30 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/85896 * gfortran.dg/min_max_type.f90: New test. From-SVN: r265649
This commit is contained in:
parent
91e3ec29af
commit
0a8949a3f2
4 changed files with 21 additions and 11 deletions
|
@ -1,3 +1,9 @@
|
|||
2018-10-30 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR fortran/85896
|
||||
* simplify.c (simplify_min_max): Do not convert the type of the
|
||||
return expression.
|
||||
|
||||
2017-10-28 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR fortran/54613
|
||||
|
|
|
@ -4961,11 +4961,9 @@ static gfc_expr *
|
|||
simplify_min_max (gfc_expr *expr, int sign)
|
||||
{
|
||||
gfc_actual_arglist *arg, *last, *extremum;
|
||||
gfc_intrinsic_sym * specific;
|
||||
|
||||
last = NULL;
|
||||
extremum = NULL;
|
||||
specific = expr->value.function.isym;
|
||||
|
||||
arg = expr->value.function.actual;
|
||||
|
||||
|
@ -4995,15 +4993,6 @@ simplify_min_max (gfc_expr *expr, int sign)
|
|||
if (expr->value.function.actual->next != NULL)
|
||||
return NULL;
|
||||
|
||||
/* Convert to the correct type and kind. */
|
||||
if (expr->ts.type != BT_UNKNOWN)
|
||||
return gfc_convert_constant (expr->value.function.actual->expr,
|
||||
expr->ts.type, expr->ts.kind);
|
||||
|
||||
if (specific->ts.type != BT_UNKNOWN)
|
||||
return gfc_convert_constant (expr->value.function.actual->expr,
|
||||
specific->ts.type, specific->ts.kind);
|
||||
|
||||
return gfc_copy_expr (expr->value.function.actual->expr);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2018-10-30 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR fortran/85896
|
||||
* gfortran.dg/min_max_type.f90: New test.
|
||||
|
||||
2018-10-30 Martin Sebor <msebor@redhat.com>
|
||||
|
||||
PR middle-end/87041
|
||||
|
|
10
gcc/testsuite/gfortran.dg/min_max_type.f90
Normal file
10
gcc/testsuite/gfortran.dg/min_max_type.f90
Normal file
|
@ -0,0 +1,10 @@
|
|||
! { dg-do run }
|
||||
! Make sure this is evaluated correctly even though max
|
||||
! has been declared integer.
|
||||
! Original test case by Gerhard Steinmetz.
|
||||
program main
|
||||
integer :: max
|
||||
character(len=1), parameter :: c = max('a','b')
|
||||
character(len=1), parameter :: d = min('a','b')
|
||||
if (c /= 'b' .or. d /= 'a') stop 1
|
||||
end program main
|
Loading…
Add table
Reference in a new issue