]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
check.c (gfc_check_achar): New function
authorSteven G. Kargl <kargls@comcast.net>
Sat, 19 Feb 2005 19:16:09 +0000 (19:16 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Sat, 19 Feb 2005 19:16:09 +0000 (19:16 +0000)
* check.c (gfc_check_achar): New function
* intrinsic.h: Prototype it.
* intrinsic.c (add_function): Use it.

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

From-SVN: r95288

gcc/fortran/ChangeLog
gcc/fortran/check.c
gcc/fortran/intrinsic.c
gcc/fortran/intrinsic.h
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/achar_1.f90 [new file with mode: 0644]

index e8d487a634123a29b0810fcb5fbe15fb1bb4e8b7..54c37ab2264dde26a91f9970737d9eaf90fcc682 100644 (file)
@@ -1,3 +1,9 @@
+2005-02-19  Steven G. Kargl  <kargls@comcast.net>
+  
+       * check.c (gfc_check_achar): New function
+       * intrinsic.h: Prototype it.
+       * intrinsic.c (add_function): Use it.
+
 2005-02-13  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>
 
        * trans-stmt.c (generate_loop_for_temp_to_lhs,
index a63112bd81efac75b173beca6c0849fd50f362ff..0a26f29390949181d508964be2e87f586d6b964f 100644 (file)
@@ -401,6 +401,16 @@ gfc_check_abs (gfc_expr * a)
   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 03d443f3c520c2a8875dd452d80a05ab325c3ef4..3c1b771c1a9b5ed981919be395f9c5fd06649eea 100644 (file)
@@ -894,7 +894,7 @@ add_functions (void)
   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 41593efe9c1f984b9033225c599a1b6b75e8700c..85f3a253e6cc20c164e8a524f7b579ea1e2665cf 100644 (file)
@@ -31,6 +31,7 @@ try gfc_check_a_xkind (gfc_expr *, gfc_expr *);
 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 *);
index 80c4f0713020f0a8855404ccd803899dd28d6d23..6d09ca0b334a93646635a5f5825964140666d265 100644 (file)
@@ -1,3 +1,7 @@
+2005-02-19  Steven G. Kargl  <kargls@comcast.net>
+
+       * gfortran.dg/achar_1.f90: New test.
+
 2005-02-19  Hans-Peter Nilsson  <hp@axis.com>
 
        * gcc.c-torture/execute/20020720-1.x: Don't XFAIL cris-*-*.
diff --git a/gcc/testsuite/gfortran.dg/achar_1.f90 b/gcc/testsuite/gfortran.dg/achar_1.f90
new file mode 100644 (file)
index 0000000..1fdb774
--- /dev/null
@@ -0,0 +1,8 @@
+! { dg-do run }
+! achar() should work with all supported integer kinds.
+program  bug6
+  integer(1) :: i = 65
+  character a
+  a = achar(i)
+  if (a /= 'A') call abort
+end program  bug6