missing_optional_dummy_1.f90

来自「用于进行gcc测试」· F90 代码 · 共 50 行

F90
50
字号
! { dg-do run }! Test the fix for PR26891, in which an optional argument, whose actual! is a missing dummy argument would cause a segfault.!! Contributed by Paul Thomas  <pault@gcc.gnu.org>!  logical :: back =.false.! This was the case that would fail - PR case was an intrinsic call.  if (scan ("A quick brown fox jumps over the lazy dog", "lazy", back) &      .ne. myscan ("A quick brown fox jumps over the lazy dog", "lazy")) &    call abort ()! Check that the patch works with non-intrinsic functions.  if (myscan ("A quick brown fox jumps over the lazy dog", "fox", back) &      .ne. thyscan ("A quick brown fox jumps over the lazy dog", "fox")) &    call abort ()! Check that missing, optional character actual arguments are OK.  if (scan ("A quick brown fox jumps over the lazy dog", "over", back) &      .ne. thyscan ("A quick brown fox jumps over the lazy dog")) &    call abort ()contains  integer function myscan (str, substr, back)    character(*), intent(in) :: str, substr    logical, optional, intent(in) :: back    myscan = scan (str, substr, back)  end function myscan  integer function thyscan (str, substr, back)    character(*), intent(in) :: str    character(*), optional, intent(in) :: substr    logical, optional, intent(in) :: back    thyscan = isscan (str, substr, back)  end function thyscan  integer function isscan (str, substr, back)    character(*), intent(in) :: str    character(*), optional :: substr    logical, optional, intent(in) :: back    if (.not.present(substr)) then      isscan = myscan (str, "over", back)    else      isscan = myscan (str, substr, back)    end if  end function isscanend

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?