PR fortran/90903 [part2] - Add runtime checking for the MVBITS intrinsic
authorHarald Anlauf <anlauf@gmx.de>
Mon, 21 Sep 2020 19:50:36 +0000 (21:50 +0200)
committerHarald Anlauf <anlauf@gmx.de>
Mon, 21 Sep 2020 19:50:36 +0000 (21:50 +0200)
commit5c5ce6099082b642294091c83461c928bd028ea1
tree03fa12b75d3c0a820e83d45d9a270a832f3fb347
parent762c16eba6b815090c56564a293cd059aea2e1d6
PR fortran/90903 [part2] - Add runtime checking for the MVBITS intrinsic

Implement inline expansion of the intrinsic elemental subroutine MVBITS
with optional runtime checks for valid argument range.

gcc/fortran/ChangeLog:

* iresolve.c (gfc_resolve_mvbits): Remove unneeded conversion of
FROMPOS, LEN and TOPOS arguments to fit a C int.
* trans-intrinsic.c (gfc_conv_intrinsic_mvbits): Add inline
expansion of MVBITS intrinsic elemental subroutine and add code
for runtime argument checking.
(gfc_conv_intrinsic_subroutine): Recognise MVBITS intrinsic, but
defer handling to gfc_trans_call.
* trans-stmt.c (replace_ss):
(gfc_trans_call): Adjust to handle inline expansion, scalarization
of intrinsic subroutine MVBITS in gfc_conv_intrinsic_mvbits.
* trans.h (gfc_conv_intrinsic_mvbits): Add prototype for
gfc_conv_intrinsic_mvbits.

gcc/testsuite/ChangeLog:

* gfortran.dg/check_bits_2.f90: New test.

Co-authored-by: Paul Thomas <pault@gcc.gnu.org>
gcc/fortran/iresolve.c
gcc/fortran/trans-intrinsic.c
gcc/fortran/trans-stmt.c
gcc/fortran/trans.h
gcc/testsuite/gfortran.dg/check_bits_2.f90 [new file with mode: 0644]