aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2008-08-23 20:49:43 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2008-08-23 20:49:43 +0200
commit3434e9a415d79a15315b333d03101dfa549b09b9 (patch)
treeda9f4000e03ed395a8392d63843a1ee0d0306e9f /gcc
parent12ba225d76f5e210fe59c3d5f8fd6615fef2d118 (diff)
downloadgcc-3434e9a415d79a15315b333d03101dfa549b09b9.zip
gcc-3434e9a415d79a15315b333d03101dfa549b09b9.tar.gz
gcc-3434e9a415d79a15315b333d03101dfa549b09b9.tar.bz2
re PR fortran/37076 (Concatenation of KIND=4 strings with KIND=4 parameters fails)
2008-08-23 Tobias Burnus <burnus@net-b.de> PR fortran/37076 * arith.c (gfc_arith_concat): Fix concat of kind=4 strings. 2008-08-23 Tobias Burnus <burnus@net-b.de> PR fortran/37076 * gfortran.dg/widechar_9.f90: New. From-SVN: r139521
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/arith.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/widechar_9.f9014
4 files changed, 26 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 30ec837..4212823 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,10 @@
2008-08-23 Tobias Burnus <burnus@net-b.de>
+ PR fortran/37076
+ * arith.c (gfc_arith_concat): Fix concat of kind=4 strings.
+
+2008-08-23 Tobias Burnus <burnus@net-b.de>
+
PR fortran/37025
* target-memory.c (gfc_interpret_character): Support
kind=4 characters.
diff --git a/gcc/fortran/arith.c b/gcc/fortran/arith.c
index 2e21b84..34780b6 100644
--- a/gcc/fortran/arith.c
+++ b/gcc/fortran/arith.c
@@ -1069,7 +1069,8 @@ gfc_arith_concat (gfc_expr *op1, gfc_expr *op2, gfc_expr **resultp)
gfc_expr *result;
int len;
- result = gfc_constant_result (BT_CHARACTER, gfc_default_character_kind,
+ gcc_assert (op1->ts.kind == op2->ts.kind);
+ result = gfc_constant_result (BT_CHARACTER, op1->ts.kind,
&op1->where);
len = op1->value.character.length + op2->value.character.length;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a87e47d..a85f6b4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2008-08-23 Tobias Burnus <burnus@net-b.de>
+ PR fortran/37076
+ * gfortran.dg/widechar_9.f90: New.
+
+2008-08-23 Tobias Burnus <burnus@net-b.de>
+
PR fortran/37025
* gfortran.dg/widechar_8.f90: New.
diff --git a/gcc/testsuite/gfortran.dg/widechar_9.f90 b/gcc/testsuite/gfortran.dg/widechar_9.f90
new file mode 100644
index 0000000..c78a1eb
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/widechar_9.f90
@@ -0,0 +1,14 @@
+! { dg-do compile }
+!
+! PR fortran/37076
+!
+! Before the result of concatenations was always a kind=1 string
+!
+program test3
+ integer,parameter :: u = 4
+ character(1,u),parameter :: nen=char(int(z'5e74'),u) !year
+ character(25,u) :: string
+ string = u_"2008"//nen
+ print *, u_"2008"//nen ! Compiles OK
+ print *, u_"2008"//nen//u_"8" ! Rejects this.
+end program test3