re PR fortran/32222 (ICE in gfc_trans_assignment_1)

PR fortran/32222
	PR fortran/32238
	PR fortran/32242	
	* trans-intrinsic.c (gfc_conv_intrinsic_function_args): Adjust
	to operate on a stack allocated array for the intrinsic arguments
	instead of creating a TREE_LIST. Add two new parameters for the
	array and the number of elements. Update all callers to allocate
	an array of the correct length to pass in. Update comment.
	(gfc_intrinsic_argument_list_length): New function.
	(gfc_conv_intrinsic_conversion): Call it.
	(gfc_conv_intrinsic_mnimax): Likewise.
	(gfc_conv_intrinsic_merge): Likewise.
	(gfc_conv_intrinsic_lib_function): Call it. Use new CALL_EXPR
	constructors.
	(gfc_conv_intrinsic_cmplx): Likewise.
	(gfc_conv_intrinsic_ctime): Likewise.
	(gfc_covn_intrinsic_fdate): Likewise.
	(gfc_conv_intrinsic_ttynam): Likewise.
	(gfc_conv_intrinsic_ishftc): Likewise.
	(gfc_conv_intrinsic_index): Likewise.
	(gfc_conv_intrinsic_scan): Likewise.
	(gfc_conv_intrinsic_verify): Likewise.
	(gfc_conv_intrinsic_trim): Likewise.
	(gfc_conv_intrinsic_aint): Use new CALL_EXPR constructors.
	(gfc_conv_intrinsic_exponent): Likewise.
	(gfc_conv_intrinsic_bound): Likewise.
	(gfc_conv_intrinsic_abs): Likewise.
	(gfc_conv_intrinsic_mod): Likewise.
	(gfc_conv_intrinsic_sign): Likewise.
	(gfc_conv_intrinsic_len): Likewise.
	(gfc_conv_intrinsic_adjust): Likewise.
	(gfc_conv_intrinsic_si_kind): Likewise. 

	* gfortran.dg/cmplx_intrinsic_1.f90: New test.

	PR fortran/32238
	* gfortran.dg/pr32238.f90: New test.

	PR fortran/32222
	* gfortran.dg/pr32222.f90: New test.

	PR fortran/32242
	* gfortran.dg/pr32242.f90: New test.

From-SVN: r126689
This commit is contained in:
Lee Millward 2007-07-16 19:12:44 +00:00 committed by Lee Millward
parent d56b9f1222
commit 55637e51b5
7 changed files with 469 additions and 310 deletions

View File

@ -1,3 +1,38 @@
2007-07-16 Lee Millward <lee.millward@gmail.com>
PR fortran/32222
PR fortran/32238
PR fortran/32242
* trans-intrinsic.c (gfc_conv_intrinsic_function_args): Adjust
to operate on a stack allocated array for the intrinsic arguments
instead of creating a TREE_LIST. Add two new parameters for the
array and the number of elements. Update all callers to allocate
an array of the correct length to pass in. Update comment.
(gfc_intrinsic_argument_list_length): New function.
(gfc_conv_intrinsic_conversion): Call it.
(gfc_conv_intrinsic_mnimax): Likewise.
(gfc_conv_intrinsic_merge): Likewise.
(gfc_conv_intrinsic_lib_function): Call it. Use new CALL_EXPR
constructors.
(gfc_conv_intrinsic_cmplx): Likewise.
(gfc_conv_intrinsic_ctime): Likewise.
(gfc_covn_intrinsic_fdate): Likewise.
(gfc_conv_intrinsic_ttynam): Likewise.
(gfc_conv_intrinsic_ishftc): Likewise.
(gfc_conv_intrinsic_index): Likewise.
(gfc_conv_intrinsic_scan): Likewise.
(gfc_conv_intrinsic_verify): Likewise.
(gfc_conv_intrinsic_trim): Likewise.
(gfc_conv_intrinsic_aint): Use new CALL_EXPR constructors.
(gfc_conv_intrinsic_exponent): Likewise.
(gfc_conv_intrinsic_bound): Likewise.
(gfc_conv_intrinsic_abs): Likewise.
(gfc_conv_intrinsic_mod): Likewise.
(gfc_conv_intrinsic_sign): Likewise.
(gfc_conv_intrinsic_len): Likewise.
(gfc_conv_intrinsic_adjust): Likewise.
(gfc_conv_intrinsic_si_kind): Likewise.
2007-07-16 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/32748

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,16 @@
2007-07-16 Lee Millward <lee.millward@gmail.com>
* gfortran.dg/cmplx_intrinsic_1.f90: New test.
PR fortran/32238
* gfortran.dg/pr32238.f90: New test.
PR fortran/32222
* gfortran.dg/pr32222.f90: New test.
PR fortran/32242
* gfortran.dg/pr32242.f90: New test.
2007-07-16 Sandra Loosemore <sandra@codesourcery.com>
David Ung <davidu@mips.com>

View File

@ -0,0 +1,16 @@
! { dg-do compile }
CONTAINS
SUBROUTINE send_forward ()
INTEGER, DIMENSION(3) :: lz, ub, uz
REAL, ALLOCATABLE, DIMENSION(:, :, :) :: buffer
COMPLEX, DIMENSION ( :, :, : ), POINTER :: cc3d
cc3d ( lz(1):uz(1), lz(2):uz(2), lz(3):uz(3) ) = &
CMPLX ( buffer ( lz(1):uz(1), lz(2):uz(2), lz(3):uz(3) ), &
KIND = SELECTED_REAL_KIND ( 14, 200 ) )
END SUBROUTINE send_forward
END

View File

@ -0,0 +1,18 @@
!PR fortran/32222
! { dg-do compile }
! { dg-final { cleanup-modules "splinemod" } }
module splinemod
implicit none
integer, parameter :: dl = KIND(1.d0)
Type lSamples
integer l(10)
end Type lSamples
end module splinemod
subroutine InterpolateClArr(lSet)
use splinemod
type (lSamples), intent(in) :: lSet
real(dl) xl(10)
xl = real(lSet%l,dl)
end subroutine InterpolateClArr

View File

@ -0,0 +1,22 @@
!PR fortran/32238
! { dg-do compile }
! { dg-final { cleanup-modules "bug_test" } }
module bug_test
contains
subroutine bug(c)
implicit none
integer, parameter :: fp = selected_real_kind(13)
complex(kind=fp) :: c(:,:)
where( abs( aimag( c ) ) < 1.e-10_fp ) &
& c = cmplx( real( c , fp ) , 0._fp , fp )
where( abs( real( c , fp ) ) < 1.e-10_fp ) &
& c = cmplx( 0._fp , aimag( c ) , fp )
return
end subroutine bug
end module bug_test

View File

@ -0,0 +1,39 @@
!PR fortran/32242
! { dg-do compile }
! { dg-final { cleanup-modules "kahan_sum" } }
MODULE kahan_sum
INTEGER, PARAMETER :: dp=KIND(0.0D0)
INTERFACE accurate_sum
MODULE PROCEDURE kahan_sum_d1, kahan_sum_z1
END INTERFACE accurate_sum
TYPE pw_grid_type
REAL (KIND=dp), DIMENSION ( : ), POINTER :: gsq
END TYPE pw_grid_type
TYPE pw_type
REAL (KIND=dp), DIMENSION ( : ), POINTER :: cr
COMPLEX (KIND=dp), DIMENSION ( : ), POINTER :: cc
TYPE ( pw_grid_type ), POINTER :: pw_grid
END TYPE pw_type
CONTAINS
FUNCTION kahan_sum_d1(array,mask) RESULT(ks)
REAL(KIND=dp), DIMENSION(:), INTENT(IN) :: array
LOGICAL, DIMENSION(:), INTENT(IN), &
OPTIONAL :: mask
REAL(KIND=dp) :: ks
END FUNCTION kahan_sum_d1
FUNCTION kahan_sum_z1(array,mask) RESULT(ks)
COMPLEX(KIND=dp), DIMENSION(:), &
INTENT(IN) :: array
LOGICAL, DIMENSION(:), INTENT(IN), &
OPTIONAL :: mask
COMPLEX(KIND=dp) :: ks
END FUNCTION kahan_sum_z1
FUNCTION pw_integral_a2b ( pw1, pw2 ) RESULT ( integral_value )
TYPE(pw_type), INTENT(IN) :: pw1, pw2
REAL(KIND=dp) :: integral_value
integral_value = accurate_sum ( REAL ( CONJG ( pw1 % cc ( : ) ) &
* pw2 % cc ( : ) ,KIND=dp) * pw1 % pw_grid % gsq ( : ) ) ! { dg-warning "Function return value not set" }
END FUNCTION pw_integral_a2b
END MODULE