aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMikael Morin <mikael@gcc.gnu.org>2014-02-15 11:48:41 +0000
committerMikael Morin <mikael@gcc.gnu.org>2014-02-15 11:48:41 +0000
commitf0cbaeb80b9fdfd5612d2c4f49f88d53b63a9475 (patch)
treed2337c5b170745c5ca1e8c1e58d2aad8a1fb357b /gcc
parent616409167414b81e98e6a6da5587dfaba5d01ba2 (diff)
downloadgcc-f0cbaeb80b9fdfd5612d2c4f49f88d53b63a9475.zip
gcc-f0cbaeb80b9fdfd5612d2c4f49f88d53b63a9475.tar.gz
gcc-f0cbaeb80b9fdfd5612d2c4f49f88d53b63a9475.tar.bz2
re PR fortran/59599 (Compiler internal error on intrinsic ichar)
fortran/ PR fortran/59599 * trans-intrinsic.c (gfc_conv_intrinsic_ichar): Calculate the number of arguments. testsuite/ PR fortran/59599 * gfortran.dg/ichar_3.f90: New test. From-SVN: r207799
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-intrinsic.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/ichar_3.f9013
4 files changed, 27 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index c625a70..b6fe3cd 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2014-02-15 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/59599
+ * trans-intrinsic.c (gfc_conv_intrinsic_ichar): Calculate the
+ number of arguments.
+
2014-02-11 Jakub Jelinek <jakub@redhat.com>
PR fortran/52370
diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c
index 1eb9490..cff8e89 100644
--- a/gcc/fortran/trans-intrinsic.c
+++ b/gcc/fortran/trans-intrinsic.c
@@ -4689,8 +4689,10 @@ static void
gfc_conv_intrinsic_ichar (gfc_se * se, gfc_expr * expr)
{
tree args[2], type, pchartype;
+ int nargs;
- gfc_conv_intrinsic_function_args (se, expr, args, 2);
+ nargs = gfc_intrinsic_argument_list_length (expr);
+ gfc_conv_intrinsic_function_args (se, expr, args, nargs);
gcc_assert (POINTER_TYPE_P (TREE_TYPE (args[1])));
pchartype = gfc_get_pchar_type (expr->value.function.actual->expr->ts.kind);
args[1] = fold_build1_loc (input_location, NOP_EXPR, pchartype, args[1]);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0891251..ec848c6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-02-15 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/59599
+ * gfortran.dg/ichar_3.f90: New test.
+
2014-02-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/60183
diff --git a/gcc/testsuite/gfortran.dg/ichar_3.f90 b/gcc/testsuite/gfortran.dg/ichar_3.f90
new file mode 100644
index 0000000..d0f5c8b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/ichar_3.f90
@@ -0,0 +1,13 @@
+! { dg-do compile }
+!
+! PR fortran/59599
+! The call to ichar was triggering an ICE.
+!
+! Original testcase from Fran Martinez Fadrique <fmartinez@gmv.com>
+
+character(1) cpk(2)
+integer res(2)
+cpk = 'a'
+res = ichar( cpk, kind=1 )
+print *, ichar( cpk, kind=1 )
+end