! Related to PR 15326.  Test calls to string functions whose lengths
! depend on various types of scalar value.
! { dg-do run }
pure function select (selector, iftrue, iffalse)
  logical, intent (in) :: selector
  integer, intent (in) :: iftrue, iffalse
  integer :: select

  if (selector) then
    select = iftrue
  else
    select = iffalse
  end if
end function select

program main
  implicit none

  interface
    pure function select (selector, iftrue, iffalse)
      logical, intent (in) :: selector
      integer, intent (in) :: iftrue, iffalse
      integer :: select
    end function select
  end interface

  type pair
    integer :: left, right
  end type pair

  integer, target :: i
  integer, pointer :: ip
  real, target :: r
  real, pointer :: rp
  logical, target :: l
  logical, pointer :: lp
  complex, target :: c
  complex, pointer :: cp
  character, target :: ch
  character, pointer :: chp
  type (pair), target :: p
  type (pair), pointer :: pp

  character (len = 10) :: dig

  i = 100
  r = 50.5
  l = .true.
  c = (10.9, 11.2)
  ch = '1'
  p%left = 40
  p%right = 50

  ip => i
  rp => r
  lp => l
  cp => c
  chp => ch
  pp => p

  dig = '1234567890'

  call test (f1 (i), 200)
  call test (f1 (ip), 200)
  call test (f1 (-30), 60)
  call test (f1 (i / (-4)), 50)

  call test (f2 (r), 100)
  call test (f2 (rp), 100)
  call test (f2 (70.1), 140)
  call test (f2 (r / 4), 24)
  call test (f2 (real (i)), 200)

  call test (f3 (l), 50)
  call test (f3 (lp), 50)
  call test (f3 (.false.), 55)
  call test (f3 (i < 30), 55)

  call test (f4 (c), 10)
  call test (f4 (cp), 10)
  call test (f4 (cmplx (60.0, r)), 60)
  call test (f4 (cmplx (r, 1.0)), 50)

  call test (f5 (ch), 11)
  call test (f5 (chp), 11)
  call test (f5 ('23'), 12)
  call test (f5 (dig (3:)), 13)
  call test (f5 (dig (10:)), 10)

  call test (f6 (p), 145)
  call test (f6 (pp), 145)
  call test (f6 (pair (20, 10)), 85)
  call test (f6 (pair (i / 2, 1)), 106)
contains
  function f1 (i)
    integer :: i
    character (len = abs (i) * 2) :: f1
    f1 = ''
  end function f1

  function f2 (r)
    real :: r
    character (len = floor (r) * 2) :: f2
    f2 = ''
  end function f2

  function f3 (l)
    logical :: l
    character (len = select (l, 50, 55)) :: f3
    f3 = ''
  end function f3

  function f4 (c)
    complex :: c
    character (len = int (c)) :: f4
    f4 = ''
  end function f4

  function f5 (c)
    character :: c
    character (len = scan ('123456789', c) + 10) :: f5
    f5 = ''
  end function f5

  function f6 (p)
    type (pair) :: p
    integer :: i
    character (len = sum ((/ p%left, p%right, (i, i = 1, 10) /))) :: f6
    f6 = ''
  end function f6

  subroutine test (string, length)
    character (len = *) :: string
    integer, intent (in) :: length
    if (len (string) .ne. length) STOP 1
  end subroutine test
end program main
