PING [gfortran] PATCH: Fix achar's lack of a check function
Steve Kargl
sgk@troutmask.apl.washington.edu
Fri Feb 11 00:36:00 GMT 2005
On Mon, Jan 31, 2005 at 04:11:28PM -0800, Steve Kargl wrote:
> With out the attached patch, the attached test case would
> not compile.
>
> 2005-01-31 Steven G. Kargl <kargls@comcast.net>
>
> * check.c (gfc_check_achar): New function
> * intrinsic.h: Prototype it.
> * intrinsic.c (add_function): Use it.
>
> --
> Steve
> program bug6
> integer(1) :: i = 65
> character a
> a = achar(i)
> if (a /= 'A') call abort
> end program bug6
> Index: check.c
> ===================================================================
> RCS file: /cvs/gcc/gcc/gcc/fortran/check.c,v
> retrieving revision 1.23
> diff -u -r1.23 check.c
> --- check.c 29 Jan 2005 17:46:30 -0000 1.23
> +++ check.c 1 Feb 2005 00:07:54 -0000
> @@ -401,6 +401,16 @@
> return SUCCESS;
> }
>
> +try
> +gfc_check_achar (gfc_expr * a)
> +{
> +
> + if (type_check (a, 0, BT_INTEGER) == FAILURE)
> + return FAILURE;
> +
> + return SUCCESS;
> +}
> +
>
> try
> gfc_check_all_any (gfc_expr * mask, gfc_expr * dim)
> Index: intrinsic.c
> ===================================================================
> RCS file: /cvs/gcc/gcc/gcc/fortran/intrinsic.c,v
> retrieving revision 1.38
> diff -u -r1.38 intrinsic.c
> --- intrinsic.c 29 Jan 2005 17:46:31 -0000 1.38
> +++ intrinsic.c 1 Feb 2005 00:07:54 -0000
> @@ -894,7 +894,7 @@
> make_generic ("abs", GFC_ISYM_ABS, GFC_STD_F77);
>
> add_sym_1 ("achar", 1, 1, BT_CHARACTER, dc, GFC_STD_F95,
> - NULL, gfc_simplify_achar, NULL,
> + gfc_check_achar, gfc_simplify_achar, NULL,
> i, BT_INTEGER, di, REQUIRED);
>
> make_generic ("achar", GFC_ISYM_ACHAR, GFC_STD_F95);
> Index: intrinsic.h
> ===================================================================
> RCS file: /cvs/gcc/gcc/gcc/fortran/intrinsic.h,v
> retrieving revision 1.21
> diff -u -r1.21 intrinsic.h
> --- intrinsic.h 29 Jan 2005 17:46:31 -0000 1.21
> +++ intrinsic.h 1 Feb 2005 00:07:54 -0000
> @@ -31,6 +31,7 @@
> try gfc_check_a_p (gfc_expr *, gfc_expr *);
>
> try gfc_check_abs (gfc_expr *);
> +try gfc_check_achar (gfc_expr *);
> try gfc_check_all_any (gfc_expr *, gfc_expr *);
> try gfc_check_allocated (gfc_expr *);
> try gfc_check_associated (gfc_expr *, gfc_expr *);
--
Steve
More information about the Fortran
mailing list