Commit 16f681db by Paul Thomas

[multiple changes]

 2017-11-06  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/69739
	* trans-expr.c (gfc_map_intrinsic_function): Return false for
	bounds without the DIM argument instead of ICEing.

2017-11-06  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/69739
	* gfortran.dg/pr69739.f90: New test.

From-SVN: r254441
parent 19520957
2017-11-06 Paul Thomas <pault@gcc.gnu.org>
PR fortran/69739
* trans-expr.c (gfc_map_intrinsic_function): Return false for
bounds without the DIM argument instead of ICEing.
2017-11-06 Martin Liska <mliska@suse.cz>
PR middle-end/82404
......
......@@ -4178,9 +4178,7 @@ gfc_map_intrinsic_function (gfc_expr *expr, gfc_interface_mapping *mapping)
if (arg2 && arg2->expr_type == EXPR_CONSTANT)
d = mpz_get_si (arg2->value.integer) - 1;
else
/* TODO: If the need arises, this could produce an array of
ubound/lbounds. */
gcc_unreachable ();
return false;
if (expr->value.function.isym->id == GFC_ISYM_LBOUND)
{
......
2017-11-06 Paul Thomas <pault@gcc.gnu.org>
PR fortran/69739
* gfortran.dg/pr69739.f90: New test.
2017-11-06 Martin Liska <mliska@suse.cz>
* c-c++-common/Wimplicit-fallthrough-8.c: Return a value for
......
! { dg-do run }
!
! Test the fix for PR69739 in which the statement
! R = operate(A, X) caused an ICE.
!
! Contributed by John <jwmwalrus@gmail.com>
!
module test
implicit none
type, public :: sometype
real :: a = 0.
end type
contains
function dosomething(A) result(r)
type(sometype), intent(IN) :: A(:,:,:)
integer :: N
real, allocatable :: R(:), X(:)
N = PRODUCT(UBOUND(A))
allocate (R(N),X(N))
X = [(real(N), N = 1, size(X, 1))]
R = operate(A, X)
end function
function operate(A, X)
type(sometype), intent(IN) :: A(:,:,:)
real, intent(IN) :: X(:)
real :: operate(1:PRODUCT(UBOUND(A)))
operate = x
end function
end module test
use test
type(sometype) :: a(2, 2, 2)
if (any(int (dosomething(a)) .ne. [1,2,3,4,5,6])) call abort
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment