Fortran: implement F2018 intrinsic OUT_OF_RANGE [PR115788]
Implementation of the Fortran 2018 standard intrinsic OUT_OF_RANGE, with the GNU Fortran extension to unsigned integers. Runtime code is fully inline expanded. PR fortran/115788 gcc/fortran/ChangeLog: * check.cc (gfc_check_out_of_range): Check arguments to intrinsic. * expr.cc (free_expr0): Fix a memleak with unsigned literals. * gfortran.h (enum gfc_isym_id): Define GFC_ISYM_OUT_OF_RANGE. * gfortran.texi: Add OUT_OF_RANGE to list of intrinsics supporting UNSIGNED. * intrinsic.cc (add_functions): Add Fortran prototype. Break some nearby lines with excessive length. * intrinsic.h (gfc_check_out_of_range): Add prototypes. * intrinsic.texi: Fortran documentation of OUT_OF_RANGE. * simplify.cc (gfc_simplify_out_of_range): Compile-time simplification of OUT_OF_RANGE. * trans-intrinsic.cc (gfc_conv_intrinsic_out_of_range): Generate inline expansion of runtime code for OUT_OF_RANGE. (gfc_conv_intrinsic_function): Use it. gcc/testsuite/ChangeLog: * gfortran.dg/ieee/out_of_range.f90: New test. * gfortran.dg/out_of_range_1.f90: New test. * gfortran.dg/out_of_range_2.f90: New test. * gfortran.dg/out_of_range_3.f90: New test.
Showing
- gcc/fortran/check.cc 42 additions, 0 deletionsgcc/fortran/check.cc
- gcc/fortran/expr.cc 1 addition, 0 deletionsgcc/fortran/expr.cc
- gcc/fortran/gfortran.h 1 addition, 0 deletionsgcc/fortran/gfortran.h
- gcc/fortran/gfortran.texi 1 addition, 6 deletionsgcc/fortran/gfortran.texi
- gcc/fortran/intrinsic.cc 21 additions, 7 deletionsgcc/fortran/intrinsic.cc
- gcc/fortran/intrinsic.h 2 additions, 0 deletionsgcc/fortran/intrinsic.h
- gcc/fortran/intrinsic.texi 67 additions, 0 deletionsgcc/fortran/intrinsic.texi
- gcc/fortran/simplify.cc 208 additions, 0 deletionsgcc/fortran/simplify.cc
- gcc/fortran/trans-intrinsic.cc 196 additions, 0 deletionsgcc/fortran/trans-intrinsic.cc
- gcc/testsuite/gfortran.dg/ieee/out_of_range.f90 65 additions, 0 deletionsgcc/testsuite/gfortran.dg/ieee/out_of_range.f90
- gcc/testsuite/gfortran.dg/out_of_range_1.f90 91 additions, 0 deletionsgcc/testsuite/gfortran.dg/out_of_range_1.f90
- gcc/testsuite/gfortran.dg/out_of_range_2.f90 115 additions, 0 deletionsgcc/testsuite/gfortran.dg/out_of_range_2.f90
- gcc/testsuite/gfortran.dg/out_of_range_3.f90 25 additions, 0 deletionsgcc/testsuite/gfortran.dg/out_of_range_3.f90
Loading
Please register or sign in to comment