Home | History | Annotate | Line # | Download | only in intrinsics
      1 !   Copyright (C) 2003-2024 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 !.
     24 
     25 function _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
     46 end function
     47