From 419af57c134f3b068530ea51179c220e52623067 Mon Sep 17 00:00:00 2001 From: Thomas Koenig Date: Mon, 7 Jan 2019 19:30:28 +0000 Subject: re PR fortran/45424 ([F08] Add IS_CONTIGUOUS intrinsic) 2019-01-07 Thomas Koenig Harald Anlauf Tobias Burnus PR fortran/45424 * check.c (gfc_check_is_contiguous): New function. * expr.c (gfc_is_not_contiguous): New function. * gfortran.h (gfc_isym_id): Add GFC_ISYM_IS_CONTIGUOUS. Add prototype for gfc_is_not_contiguous. * intrinsic.c (do_ts29113_check): Add GFC_ISYM_IS_CONTIGUOUS. (add_function): Add is_contiguous. * intrinsic.h: Add prototypes for gfc_check_is_contiguous, gfc_simplify_is_contiguous and gfc_resolve_is_contiguous. * intrinsic.texi: Add IS_CONTIGUOUS. * iresolve.c (gfc_resolve_is_contiguous): New function. * simplify.c (gfc_simplify_is_contiguous): New function. * trans-decl.c (gfor_fncecl_is_contiguous0): New variable. (gfc_build_intrinsic_function_decl): Add it. * trans-intrinsic.c (gfc_conv_intrinsic_is_contiguous): New function. (gfc_conv_intrinsic_function): Handle GFC_ISYM_IS_CONTIGUOUS. 2019-01-07 Thomas Koenig Harald Anlauf Tobias Burnus PR fortran/45424 * Makefile.am: Add intrinsics/is_contiguous.c. * Makefile.in: Regenerated. * gfortran.map: Add _gfortran_is_contiguous0. * intrinsics/is_contiguous.c: New file. * libgfortran.h: Add prototype for is_contiguous0. 2019-01-07 Thomas Koenig Harald Anlauf Tobias Burnus * gfortran.dg/is_contiguous_1.f90: New test. * gfortran.dg/is_contiguous_2.f90: New test. * gfortran.dg/is_contiguous_3.f90: New test. Co-Authored-By: Harald Anlauf Co-Authored-By: Tobias Burnus From-SVN: r267657 --- gcc/fortran/intrinsic.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'gcc/fortran/intrinsic.h') diff --git a/gcc/fortran/intrinsic.h b/gcc/fortran/intrinsic.h index 027f16b..0c60dab 100644 --- a/gcc/fortran/intrinsic.h +++ b/gcc/fortran/intrinsic.h @@ -99,6 +99,7 @@ bool gfc_check_index (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *); bool gfc_check_int (gfc_expr *, gfc_expr *); bool gfc_check_intconv (gfc_expr *); bool gfc_check_irand (gfc_expr *); +bool gfc_check_is_contiguous (gfc_expr *); bool gfc_check_isatty (gfc_expr *); bool gfc_check_isnan (gfc_expr *); bool gfc_check_ishft (gfc_expr *, gfc_expr *); @@ -327,6 +328,7 @@ gfc_expr *gfc_simplify_ifix (gfc_expr *); gfc_expr *gfc_simplify_idint (gfc_expr *); gfc_expr *gfc_simplify_ior (gfc_expr *, gfc_expr *); gfc_expr *gfc_simplify_iparity (gfc_expr *, gfc_expr *, gfc_expr *); +gfc_expr *gfc_simplify_is_contiguous (gfc_expr *); gfc_expr *gfc_simplify_is_iostat_end (gfc_expr *); gfc_expr *gfc_simplify_is_iostat_eor (gfc_expr *); gfc_expr *gfc_simplify_isnan (gfc_expr *); @@ -531,6 +533,7 @@ void gfc_resolve_long (gfc_expr *, gfc_expr *); void gfc_resolve_ior (gfc_expr *, gfc_expr *, gfc_expr *); void gfc_resolve_iparity (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *); void gfc_resolve_isatty (gfc_expr *, gfc_expr *); +void gfc_resolve_is_contiguous (gfc_expr *, gfc_expr *); void gfc_resolve_rank (gfc_expr *, gfc_expr *); void gfc_resolve_rshift (gfc_expr *, gfc_expr *, gfc_expr *); void gfc_resolve_lshift (gfc_expr *, gfc_expr *, gfc_expr *); -- cgit v1.1