OSDN Git Service

PR fortran/38282
authorfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 8 Sep 2010 19:35:35 +0000 (19:35 +0000)
committerfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 8 Sep 2010 19:35:35 +0000 (19:35 +0000)
commitf004c7aa6291653d76a95e499cdbcb25a547e51c
treec19b0a8679d5f05b750bdcabd97a0981c2238d99
parent735232df4918a42d5c3d75b1e1a10d2b2c55a075
PR fortran/38282

* intrinsic.c (add_functions): Add B{G,L}{E,T}, DSHIFT{L,R},
MASK{L,R}, MERGE_BITS and SHIFT{A,L,R}.
* gfortran.h: Define ISYM values for above intrinsics.
* intrinsic.h (gfc_check_bge_bgt_ble_blt, gfc_check_dshift,
gfc_check_mask, gfc_check_merge_bits, gfc_check_shift,
gfc_simplify_bge, gfc_simplify_bgt, gfc_simplify_ble,
gfc_simplify_blt, gfc_simplify_dshiftl, gfc_simplify_dshiftr,
gfc_simplify_lshift, gfc_simplify_maskl, gfc_simplify_maskr,
gfc_simplify_merge_bits, gfc_simplify_rshift,
gfc_simplify_shifta, gfc_simplify_shiftl, gfc_simplify_shiftr,
gfc_resolve_dshift, gfc_resolve_mask, gfc_resolve_merge_bits,
gfc_resolve_shift): New prototypes.
* iresolve.c (gfc_resolve_dshift, gfc_resolve_mask,
gfc_resolve_merge_bits, gfc_resolve_shift): New functions.
* check.c (gfc_check_bge_bgt_ble_blt, gfc_check_dshift,
gfc_check_mask, gfc_check_merge_bits, gfc_check_shift): New
functions.
* trans-intrinsic.c (gfc_conv_intrinsic_dshift,
gfc_conv_intrinsic_bitcomp, gfc_conv_intrinsic_shift,
gfc_conv_intrinsic_merge_bits, gfc_conv_intrinsic_mask): New
functions.
(gfc_conv_intrinsic_function): Call above static functions.
* intrinsic.texi: Document new intrinsics.
* simplify.c (gfc_simplify_bge, gfc_simplify_bgt, gfc_simplify_ble,
        gfc_simplify_blt, gfc_simplify_dshiftl, gfc_simplify_dshiftr,
        gfc_simplify_lshift, gfc_simplify_maskl, gfc_simplify_maskr,
        gfc_simplify_merge_bits, gfc_simplify_rshift,
        gfc_simplify_shifta, gfc_simplify_shiftl, gfc_simplify_shiftr):
New functions.

* gfortran.dg/bit_comparison_1.F90: New test.
* gfortran.dg/leadz_trailz_3.f90: New test.
* gfortran.dg/masklr_2.F90: New test.
* gfortran.dg/shiftalr_1.F90: New test.
* gfortran.dg/merge_bits_2.F90: New test.
* gfortran.dg/dshift_2.F90: New test.
* gfortran.dg/bit_comparison_2.F90: New test.
* gfortran.dg/masklr_1.F90: New test.
* gfortran.dg/merge_bits_1.F90: New test.
* gfortran.dg/dshift_1.F90: New test.
* gfortran.dg/shiftalr_2.F90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164021 138bc75d-0d04-0410-961f-82ee72b054a4
21 files changed:
gcc/fortran/ChangeLog
gcc/fortran/check.c
gcc/fortran/gfortran.h
gcc/fortran/intrinsic.c
gcc/fortran/intrinsic.h
gcc/fortran/intrinsic.texi
gcc/fortran/iresolve.c
gcc/fortran/simplify.c
gcc/fortran/trans-intrinsic.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/bit_comparison_1.F90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/bit_comparison_2.F90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/dshift_1.F90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/dshift_2.F90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/leadz_trailz_3.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/masklr_1.F90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/masklr_2.F90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/merge_bits_1.F90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/merge_bits_2.F90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/shiftalr_1.F90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/shiftalr_2.F90 [new file with mode: 0644]