Fwd: [patch] Fix PR19294
Andrew Pinski
pinskia@physics.uc.edu
Sun Jan 16 06:19:00 GMT 2005
Forwarding to the fortran mailing list because this is a fortran patch.
-- Pinski
Begin forwarded message:
> From: ja2morri@csclub.uwaterloo.ca (James Morrison)
> Date: January 16, 2005 12:47:33 AM EST
> To: gcc-patches@gcc.gnu.org
> Subject: [patch] Fix PR19294
>
>
> Hi,
>
> The problem here is that complex(kind=4) is only aligned to 4 bytes,
> but
> _gfortran_transpose_8 uses an 8 byte integer which is expected to be
> aligned
> to 8 bytes on STRICT_ALIGNMENT targets. Thus passing complex(kind=4)
> which
> is aligned to 4 bytes and not 8 bytes causes a bus error in
> _gfortran_transpose_8 which is what causes intrinsic_transpose.f90 to
> fail
> on SPARC. This patch gets complex types to use the generic transpose
> function,
> thus fixing the problem.
>
> There is similar mucking of kind for complex types in
> gfc_resolve_reshape,
> but I can't any bus errors out of any of the reshape functions. The
> kind
> mucking is actually ignored in gfc_resolve_reshape so it might be
> possible
> to remove that chunk of code. That is a different patch though.
>
> The attached patch has been bootstrapped and regtested on
> sparc-linux, Ok
> for mainline?
>
> --
> Thanks,
> Jim
>
> http://www.student.cs.uwaterloo.ca/~ja2morri/
> http://phython.blogspot.com
> http://open.nit.ca/wiki/?page=jim
>
> 2005-01-16 James A. Morrison <phython@gcc.gnu.org>
>
> * iresolve.c (gfc_resolve_transpose): Use generic transpose
> for complex numbers on STRICT_ALIGNMENT targets.
>
> Index: iresolve.c
> ===================================================================
> RCS file: /cvs/gcc/gcc/gcc/fortran/iresolve.c,v
> retrieving revision 1.28
> diff -u -p -r1.28 iresolve.c
> --- iresolve.c 15 Dec 2004 03:56:05 -0000 1.28
> +++ iresolve.c 15 Jan 2005 00:45:30 -0000
> @@ -1,5 +1,5 @@
> /* Intrinsic function resolution.
> - Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software
> Foundation,
> + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Free Software
> Foundation,
> Inc.
> Contributed by Andy Vaught & Katherine Holcomb
>
> @@ -31,6 +31,7 @@ Software Foundation, 59 Temple Place - S
> #include "config.h"
> #include "system.h"
> #include "coretypes.h"
> +#include "tm.h"
> #include "tree.h"
> #include "gfortran.h"
> #include "intrinsic.h"
> @@ -1343,7 +1347,10 @@ gfc_resolve_transpose (gfc_expr * f, gfc
> switch (matrix->ts.type)
> {
> case BT_COMPLEX:
> - kind = matrix->ts.kind * 2;
> + if (STRICT_ALIGNMENT)
> + kind = 0;
> + else
> + kind = matrix->ts.kind * 2;
> break;
>
> case BT_REAL:
>
More information about the Fortran
mailing list