diff options
| author | pbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-01-23 17:01:00 +0000 |
|---|---|---|
| committer | pbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-01-23 17:01:00 +0000 |
| commit | 1c03ad1f993b72f86fc79647210ba17ce7ff32f2 (patch) | |
| tree | d9ae2043205be06ce0d7a27be58b05e0a8e5c085 /gcc/fortran/iresolve.c | |
| parent | 9ab662fc958300c6735a7d8245e185d761d34477 (diff) | |
| download | ppe42-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.c | 41 |
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: |

