1!   Copyright (C) 2003-2018 Free Software Foundation, Inc.
2!   Contributed by Kejia Zhao <kejia_zh@yahoo.com.cn>
3!
4!This file is part of the GNU Fortran 95 runtime library (libgfortran).
5!
6!Libgfortran is free software; you can redistribute it and/or
7!modify it under the terms of the GNU General Public
8!License as published by the Free Software Foundation; either
9!version 3 of the License, or (at your option) any later version.
10!
11!Libgfortran is distributed in the hope that it will be useful,
12!but WITHOUT ANY WARRANTY; without even the implied warranty of
13!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14!GNU General Public License for more details.
15!
16!Under Section 7 of GPL version 3, you are granted additional
17!permissions described in the GCC Runtime Library Exception, version
18!3.1, as published by the Free Software Foundation.
19!
20!You should have received a copy of the GNU General Public License and
21!a copy of the GCC Runtime Library Exception along with this program;
22!see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
23!<http://www.gnu.org/licenses/>.
24
25function _gfortran_selected_int_kind (r)
26  implicit none
27  integer, intent (in) :: r
28  integer :: _gfortran_selected_int_kind
29  integer :: i
30  ! Integer kind_range table
31  type :: int_info
32    integer :: kind
33    integer :: range
34  end type int_info
35
36  include "selected_int_kind.inc"
37
38  do i = 1, c
39    if (r <= int_infos (i) % range) then
40      _gfortran_selected_int_kind = int_infos (i) % kind
41      return
42    end if
43  end do
44  _gfortran_selected_int_kind = -1
45  return
46end function
47