aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorThomas Koenig <Thomas.Koenig@online.de>2005-05-18 20:24:32 +0000
committerThomas Koenig <Thomas.Koenig@online.de>2005-05-18 20:24:32 +0000
commit54621eaee158358d9187cdfc95142f2b1b3dcc2c (patch)
treea66bc7623de0b253a4f3ae529a58a4948e04f604 /gcc
parent7bb888024ebbe8a1f5d757f97b126ed3a20d5e51 (diff)
2005-05-18 Thomas Koenig <Thomas.Koenig@online.de>
PR libfortran/21127 * Makefile.am: Add generated/reshape_c4.c and generated/reshape_c8.c. * Makefile.in: Regenerated. * m4/iparm.m4: Define rtype_ccode to be c4 or c8 for complex types, 4 or 8 otherwise. * m4/reshape.m4: Use rtype_ccode instead of rtype_kind in function name. * generated/reshape_c4.c: New file. * generated/reshape_c8.c: New file. 2005-05-18 Thomas Koenig <Thomas.Koenig@online.de> PR libfortran/21127 * fortran/iresolve.c (gfc_resolve_reshape): Add gfc_type_letter (BT_COMPLEX) for complex to to resolved function name. 2005-05-18 Thomas Koenig <Thomas.Koenig@online.de> PR libfortran/21127 * gfortran.dg/reshape-complex.f90: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@99925 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/iresolve.c10
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/reshape-complex.f9011
4 files changed, 31 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 31179f06a02..87e10472d98 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2005-05-18 Thomas Koenig <Thomas.Koenig@online.de>
+
+ PR libfortran/21127
+ * fortran/iresolve.c (gfc_resolve_reshape): Add
+ gfc_type_letter (BT_COMPLEX) for complex to
+ to resolved function name.
+
2005-05-18 Erik Edelmann <erik.edelmann@iki.fi>
* array.c (gfc_match_array_constructor): Support [ ... ]
diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c
index 746b97df444..e9392871fef 100644
--- a/gcc/fortran/iresolve.c
+++ b/gcc/fortran/iresolve.c
@@ -1137,8 +1137,14 @@ gfc_resolve_reshape (gfc_expr * f, gfc_expr * source, gfc_expr * shape,
case 4:
case 8:
/* case 16: */
- f->value.function.name =
- gfc_get_string (PREFIX("reshape_%d"), source->ts.kind);
+ if (source->ts.type == BT_COMPLEX)
+ f->value.function.name =
+ gfc_get_string (PREFIX("reshape_%c%d"),
+ gfc_type_letter (BT_COMPLEX), source->ts.kind);
+ else
+ f->value.function.name =
+ gfc_get_string (PREFIX("reshape_%d"), source->ts.kind);
+
break;
default:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7ee682a9273..74b37015dc0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-05-18 Thomas Koenig <Thomas.Koenig@online.de>
+
+ PR libfortran/21127
+ * gfortran.dg/reshape-complex.f90: New test.
+
2005-05-18 Erik Edelmann <erik.edelmann@iki.fi>
* gfortran.dg/array_constructor_1.f90: New test.
diff --git a/gcc/testsuite/gfortran.dg/reshape-complex.f90 b/gcc/testsuite/gfortran.dg/reshape-complex.f90
new file mode 100644
index 00000000000..87c80498494
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/reshape-complex.f90
@@ -0,0 +1,11 @@
+! { dg-do run }
+! PR 21127: Reshape of complex didn't work.
+program main
+ complex, dimension(8) :: b
+ complex, dimension(2,2) :: a
+ integer :: i
+ b = (/(i,i=1,8)/)
+ a = reshape(b(1:8:2),shape(a))
+ if (a(1,1) /= (1.0, 0.0) .or. a(2,1) /= (3.0, 0.0) .or. &
+ a(1,2) /= (5.0, 0.0) .or. a(2,2) /= (7.0, 0.0)) call abort
+end