aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven G. Kargl <kargls@comcast.net>2005-02-19 19:16:09 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2005-02-19 19:16:09 +0000
commit332e7efe7fa434a998aa5634dca6d4f93810f65f (patch)
treed7990ad850e1815cb9619494567bf04eea895193 /gcc
parent6ca84a804a7378e79bbb1d5a6d646ead7e6cfa46 (diff)
downloadgcc-332e7efe7fa434a998aa5634dca6d4f93810f65f.zip
gcc-332e7efe7fa434a998aa5634dca6d4f93810f65f.tar.gz
gcc-332e7efe7fa434a998aa5634dca6d4f93810f65f.tar.bz2
check.c (gfc_check_achar): New function
* 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/check.c10
-rw-r--r--gcc/fortran/intrinsic.c2
-rw-r--r--gcc/fortran/intrinsic.h1
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gfortran.dg/achar_1.f908
6 files changed, 30 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index e8d487a..54c37ab 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -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,
diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c
index a63112b..0a26f29 100644
--- a/gcc/fortran/check.c
+++ b/gcc/fortran/check.c
@@ -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)
diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c
index 03d443f..3c1b771 100644
--- a/gcc/fortran/intrinsic.c
+++ b/gcc/fortran/intrinsic.c
@@ -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);
diff --git a/gcc/fortran/intrinsic.h b/gcc/fortran/intrinsic.h
index 41593ef..85f3a25 100644
--- a/gcc/fortran/intrinsic.h
+++ b/gcc/fortran/intrinsic.h
@@ -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 *);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 80c4f07..6d09ca0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..1fdb774
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/achar_1.f90
@@ -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