diff options
author | Tobias Burnus <burnus@net-b.de> | 2008-08-23 20:49:43 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2008-08-23 20:49:43 +0200 |
commit | 3434e9a415d79a15315b333d03101dfa549b09b9 (patch) | |
tree | da9f4000e03ed395a8392d63843a1ee0d0306e9f /gcc | |
parent | 12ba225d76f5e210fe59c3d5f8fd6615fef2d118 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/arith.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/widechar_9.f90 | 14 |
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 |