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:
parent
d56b9f1222
commit
55637e51b5
|
@ -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>
|
2007-07-16 Janne Blomqvist <jb@gcc.gnu.org>
|
||||||
|
|
||||||
PR fortran/32748
|
PR fortran/32748
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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>
|
2007-07-16 Sandra Loosemore <sandra@codesourcery.com>
|
||||||
David Ung <davidu@mips.com>
|
David Ung <davidu@mips.com>
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue