summaryrefslogtreecommitdiffstats
path: root/gcc/fortran/iresolve.c
diff options
context:
space:
mode:
authorpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-23 17:01:00 +0000
committerpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-23 17:01:00 +0000
commit1c03ad1f993b72f86fc79647210ba17ce7ff32f2 (patch)
treed9ae2043205be06ce0d7a27be58b05e0a8e5c085 /gcc/fortran/iresolve.c
parent9ab662fc958300c6735a7d8245e185d761d34477 (diff)
downloadppe42-gcc-1c03ad1f993b72f86fc79647210ba17ce7ff32f2.tar.gz
ppe42-gcc-1c03ad1f993b72f86fc79647210ba17ce7ff32f2.zip
2005-01-23 James A. Morrison <phython@gcc.gnu.org>
Paul Brook <paul@codesourcery.com> PR fortran/19294 * iresolve.c (gfc_resolve_transpose): Resolve to transpose_c4 or transpose_c8 for complex types. libgfortran/ * Makefile.am: Add transpose_c4.c and transpose_c8.c. * intrinsics/cshift0.c: Use separate optimized loops for complex types. * m4/transpose.m4: Include type letter in function name. * Makefile.in: Regenerate. * generated/transpose_*.c: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94116 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/iresolve.c')
-rw-r--r--gcc/fortran/iresolve.c41
1 files changed, 21 insertions, 20 deletions
diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c
index 60c443ecb4f..a4ab2251761 100644
--- a/gcc/fortran/iresolve.c
+++ b/gcc/fortran/iresolve.c
@@ -1340,31 +1340,32 @@ gfc_resolve_transpose (gfc_expr * f, gfc_expr * matrix)
mpz_init_set (f->shape[1], matrix->shape[0]);
}
- switch (matrix->ts.type)
- {
- case BT_COMPLEX:
- kind = matrix->ts.kind * 2;
- break;
-
- case BT_REAL:
- case BT_INTEGER:
- case BT_LOGICAL:
- kind = matrix->ts.kind;
- break;
-
- default:
- kind = 0;
- break;
-
- }
+ kind = matrix->ts.kind;
switch (kind)
{
case 4:
case 8:
- /* case 16: */
- f->value.function.name =
- gfc_get_string (PREFIX("transpose_%d"), kind);
+ switch (matrix->ts.type)
+ {
+ case BT_COMPLEX:
+ f->value.function.name =
+ gfc_get_string (PREFIX("transpose_c%d"), kind);
+ break;
+
+ case BT_INTEGER:
+ case BT_REAL:
+ case BT_LOGICAL:
+ /* Use the integer routines for real and logical cases. This
+ assumes they all have the same alignment requirements. */
+ f->value.function.name =
+ gfc_get_string (PREFIX("transpose_i%d"), kind);
+ break;
+
+ default:
+ f->value.function.name = PREFIX("transpose");
+ break;
+ }
break;
default:
OpenPOWER on IntegriCloud