assumed_size_refs_1.f90
来自「用于进行gcc测试」· F90 代码 · 共 65 行
F90
65 行
!==================assumed_size_refs_1.f90==================! { dg-do compile }! Test the fix for PR25029, PR21256 in which references to! assumed size arrays without an upper bound to the last! dimension were generating no error. The first version of! the patch failed in DHSEQR, as pointed out by Toon Moene! in http://gcc.gnu.org/ml/fortran/2005-12/msg00466.html!! Contributed by Paul Thomas <pault@gcc.gnu.org>!program assumed_size_test_1 implicit none real a(2, 4) a = 1.0 call foo (a)contains subroutine foo(m) real, target :: m(1:2, *) real x(2,2,2) real, external :: bar real, pointer :: p(:,:), q(:,:) allocate (q(2,2))! PR25029 p => m ! { dg-error "upper bound in the last dimension" } q = m ! { dg-error "upper bound in the last dimension" }! PR21256( and PR25060) m = 1 ! { dg-error "upper bound in the last dimension" } m(1,1) = 2.0 x = bar (m) x = fcn (m) ! { dg-error "upper bound in the last dimension" } m(:, 1:2) = fcn (q) call sub (m, x) ! { dg-error "upper bound in the last dimension" } call sub (m(1:2, 1:2), x) ! { dg-error "Incompatible ranks in elemental procedure" } print *, p call DHSEQR(x) end subroutine foo elemental function fcn (a) result (b) real, intent(in) :: a real :: b b = 2.0 * a end function fcn elemental subroutine sub (a, b) real, intent(inout) :: a, b b = 2.0 * a end subroutine sub SUBROUTINE DHSEQR( WORK ) REAL WORK( * ) EXTERNAL DLARFX INTRINSIC MIN WORK( 1 ) = 1.0 CALL DLARFX( MIN( 1, 8 ), WORK ) END SUBROUTINE DHSEQRend program assumed_size_test_1
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?