This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[libgfortran] Change complex type letter to 'z'


Hi, all
  The front end of fortran uses 'z' as the complex type letter. But libgfortran
uses 'c'and this will cause link error. This patch fixes this.
  The libgfortran ChangeLog entry:
2003-12-16  Feng Wang  <fengwang@nudt.edu.cn>

	* libgfortran.h (gfc_array_c*): Change complex type letter to 'z'.
	* Makefile.am: Ditto.
	* m4/dotprod.m4: Ditto .
	* m4/iparm.m4: Ditto.
	* m4/matmul.m4: Ditto.
	* m4/specific.m4: Ditto.
	* m4/specific2.m4: Ditto.
	* m4/types.m4: Ditto.
	* Makefile.in: Regenerate.
	* generated/*: Update.

  The testsuit ChangeLog.tree-ssa entry:
2003-12-16  Feng Wang  <fengwang@nudt.edu.cn>

	* gfortran.fortran-torture/excute/intrinsic_matmul.f90:
	Add complex test.

  Could anyone help me check and apply them? 

  r~
  Feng Wang

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
Index: Makefile.am
===================================================================
RCS file: /home/cvs/gcc/libgfortran/Makefile.am,v
retrieving revision 1.1.1.1
diff -c -3 -p -r1.1.1.1 Makefile.am
*** Makefile.am	3 Dec 2003 22:07:08 -0000	1.1.1.1
--- Makefile.am	16 Dec 2003 17:27:10 -0000
*************** generated/sum_i4.c \
*** 137,160 ****
  generated/sum_i8.c \
  generated/sum_r4.c \
  generated/sum_r8.c \
! generated/sum_c4.c \
! generated/sum_c8.c
  
  i_product_c= \
  generated/product_i4.c \
  generated/product_i8.c \
  generated/product_r4.c \
  generated/product_r8.c \
! generated/product_c4.c \
! generated/product_c8.c
  
  i_dotprod_c= \
  generated/dotprod_i4.c \
  generated/dotprod_i8.c \
  generated/dotprod_r4.c \
  generated/dotprod_r8.c \
! generated/dotprod_c4.c \
! generated/dotprod_c8.c
  
  i_dotprodl_c= \
  generated/dotprod_l4.c \
--- 137,160 ----
  generated/sum_i8.c \
  generated/sum_r4.c \
  generated/sum_r8.c \
! generated/sum_z4.c \
! generated/sum_z8.c
  
  i_product_c= \
  generated/product_i4.c \
  generated/product_i8.c \
  generated/product_r4.c \
  generated/product_r8.c \
! generated/product_z4.c \
! generated/product_z8.c
  
  i_dotprod_c= \
  generated/dotprod_i4.c \
  generated/dotprod_i8.c \
  generated/dotprod_r4.c \
  generated/dotprod_r8.c \
! generated/dotprod_z4.c \
! generated/dotprod_z8.c
  
  i_dotprodl_c= \
  generated/dotprod_l4.c \
*************** generated/matmul_i4.c \
*** 165,172 ****
  generated/matmul_i8.c \
  generated/matmul_r4.c \
  generated/matmul_r8.c \
! generated/matmul_c4.c \
! generated/matmul_c8.c
  
  i_matmull_c= \
  generated/matmul_l4.c \
--- 165,172 ----
  generated/matmul_i8.c \
  generated/matmul_r4.c \
  generated/matmul_r8.c \
! generated/matmul_z4.c \
! generated/matmul_z8.c
  
  i_matmull_c= \
  generated/matmul_l4.c \
*************** gfor_built_src= $(i_all_c) $(i_any_c) $(
*** 239,262 ****
  # We only use these if libm doesn't contain complex math functions.
  
  gfor_math_trig_c= \
! generated/trig_c4.c \
! generated/trig_c8.c
  gfor_math_exp_c= \
! generated/exp_c4.c \
! generated/exp_c8.c
  gfor_math_hyp_c= \
! generated/hyp_c4.c \
! generated/hyp_c8.c
  
  gfor_math_trig_obj= \
! trig_c4.lo \
! trig_c8.lo
  gfor_math_exp_obj= \
! exp_c4.lo \
! exp_c8.lo
  gfor_math_hyp_obj= \
! hyp_c4.lo \
! hyp_c8.lo
  
  # Machine generated specifics
  gfor_built_specific_src= \
--- 239,262 ----
  # We only use these if libm doesn't contain complex math functions.
  
  gfor_math_trig_c= \
! generated/trig_z4.c \
! generated/trig_z8.c
  gfor_math_exp_c= \
! generated/exp_z4.c \
! generated/exp_z8.c
  gfor_math_hyp_c= \
! generated/hyp_z4.c \
! generated/hyp_z8.c
  
  gfor_math_trig_obj= \
! trig_z4.lo \
! trig_z8.lo
  gfor_math_exp_obj= \
! exp_z4.lo \
! exp_z8.lo
  gfor_math_hyp_obj= \
! hyp_z4.lo \
! hyp_z8.lo
  
  # Machine generated specifics
  gfor_built_specific_src= \
*************** generated/_abs_r4.f90 \
*** 264,281 ****
  generated/_abs_r8.f90 \
  generated/_exp_r4.f90 \
  generated/_exp_r8.f90 \
! generated/_exp_c4.f90 \
! generated/_exp_c8.f90 \
  generated/_log_r4.f90 \
  generated/_log_r8.f90 \
! generated/_log_c4.f90 \
! generated/_log_c8.f90 \
  generated/_log10_r4.f90 \
  generated/_log10_r8.f90 \
  generated/_sqrt_r4.f90 \
  generated/_sqrt_r8.f90 \
! generated/_sqrt_c4.f90 \
! generated/_sqrt_c8.f90 \
  generated/_asin_r4.f90 \
  generated/_asin_r8.f90 \
  generated/_acos_r4.f90 \
--- 264,281 ----
  generated/_abs_r8.f90 \
  generated/_exp_r4.f90 \
  generated/_exp_r8.f90 \
! generated/_exp_z4.f90 \
! generated/_exp_z8.f90 \
  generated/_log_r4.f90 \
  generated/_log_r8.f90 \
! generated/_log_z4.f90 \
! generated/_log_z8.f90 \
  generated/_log10_r4.f90 \
  generated/_log10_r8.f90 \
  generated/_sqrt_r4.f90 \
  generated/_sqrt_r8.f90 \
! generated/_sqrt_z4.f90 \
! generated/_sqrt_z8.f90 \
  generated/_asin_r4.f90 \
  generated/_asin_r8.f90 \
  generated/_acos_r4.f90 \
*************** generated/_atan_r4.f90 \
*** 284,295 ****
  generated/_atan_r8.f90 \
  generated/_sin_r4.f90 \
  generated/_sin_r8.f90 \
! generated/_sin_c4.f90 \
! generated/_sin_c8.f90 \
  generated/_cos_r4.f90 \
  generated/_cos_r8.f90 \
! generated/_cos_c4.f90 \
! generated/_cos_c8.f90 \
  generated/_tan_r4.f90 \
  generated/_tan_r8.f90 \
  generated/_sinh_r4.f90 \
--- 284,295 ----
  generated/_atan_r8.f90 \
  generated/_sin_r4.f90 \
  generated/_sin_r8.f90 \
! generated/_sin_z4.f90 \
! generated/_sin_z8.f90 \
  generated/_cos_r4.f90 \
  generated/_cos_r8.f90 \
! generated/_cos_z4.f90 \
! generated/_cos_z8.f90 \
  generated/_tan_r4.f90 \
  generated/_tan_r8.f90 \
  generated/_sinh_r4.f90 \
*************** generated/_cosh_r4.f90 \
*** 298,305 ****
  generated/_cosh_r8.f90 \
  generated/_tanh_r4.f90 \
  generated/_tanh_r8.f90 \
! generated/_conjg_c4.f90 \
! generated/_conjg_c8.f90 \
  generated/_aint_r4.f90 \
  generated/_aint_r8.f90 \
  generated/_anint_r4.f90 \
--- 298,305 ----
  generated/_cosh_r8.f90 \
  generated/_tanh_r4.f90 \
  generated/_tanh_r8.f90 \
! generated/_conjg_z4.f90 \
! generated/_conjg_z8.f90 \
  generated/_aint_r4.f90 \
  generated/_aint_r8.f90 \
  generated/_anint_r4.f90 \
Index: libgfortran.h
===================================================================
RCS file: /home/cvs/gcc/libgfortran/libgfortran.h,v
retrieving revision 1.1.1.1
diff -c -3 -p -r1.1.1.1 libgfortran.h
*** libgfortran.h	3 Dec 2003 22:07:09 -0000	1.1.1.1
--- libgfortran.h	16 Dec 2003 17:27:10 -0000
*************** typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DI
*** 126,133 ****
  typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_INTEGER_8) gfc_array_i8;
  typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_REAL_4) gfc_array_r4;
  typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_REAL_8) gfc_array_r8;
! typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_COMPLEX_4) gfc_array_c4;
! typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_COMPLEX_8) gfc_array_c8;
  typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_LOGICAL_4) gfc_array_l4;
  typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_LOGICAL_8) gfc_array_l8;
  
--- 126,133 ----
  typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_INTEGER_8) gfc_array_i8;
  typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_REAL_4) gfc_array_r4;
  typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_REAL_8) gfc_array_r8;
! typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_COMPLEX_4) gfc_array_z4;
! typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_COMPLEX_8) gfc_array_z8;
  typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_LOGICAL_4) gfc_array_l4;
  typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_LOGICAL_8) gfc_array_l8;
  
Index: m4/dotprod.m4
===================================================================
RCS file: /home/cvs/gcc/libgfortran/m4/dotprod.m4,v
retrieving revision 1.1.1.1
diff -c -3 -p -r1.1.1.1 dotprod.m4
*** m4/dotprod.m4	3 Dec 2003 22:07:09 -0000	1.1.1.1
--- m4/dotprod.m4	16 Dec 2003 17:27:10 -0000
*************** Boston, MA 02111-1307, USA.  */
*** 24,30 ****
  #include <assert.h>
  #include "libgfortran.h"'
  include(types.m4)dnl
! define(rtype_code, regexp(file, `_\([irc][0-9]+\)\.', `\1'))dnl
  define(rtype_letter,substr(rtype_code, 0, 1))dnl
  define(rtype_kind, substr(rtype_code, 1))dnl
  define(rtype,get_arraytype(rtype_letter,rtype_kind))dnl
--- 24,30 ----
  #include <assert.h>
  #include "libgfortran.h"'
  include(types.m4)dnl
! define(rtype_code, regexp(file, `_\([irz][0-9]+\)\.', `\1'))dnl
  define(rtype_letter,substr(rtype_code, 0, 1))dnl
  define(rtype_kind, substr(rtype_code, 1))dnl
  define(rtype,get_arraytype(rtype_letter,rtype_kind))dnl
Index: m4/iparm.m4
===================================================================
RCS file: /home/cvs/gcc/libgfortran/m4/iparm.m4,v
retrieving revision 1.1.1.1
diff -c -3 -p -r1.1.1.1 iparm.m4
*** m4/iparm.m4	3 Dec 2003 22:07:09 -0000	1.1.1.1
--- m4/iparm.m4	16 Dec 2003 17:27:10 -0000
*************** dnl This file is part of the GNU Fortran
*** 4,12 ****
  dnl Distributed under the GNU LGPL.  See COPYING for details.
  dnl M4 macro file to get type names from filenames
  include(`types.m4')
! define(type_letter, regexp(file, `_\([irlc]\)[^_]*$', \1))dnl
! define(type_kind, regexp(file, `_[irlc]\([0-9]*\)[^_]*$', \1))dnl
! define(rtype_kind, regexp(file, `_\([0-9]*\)_[irlc][0-9]*[^_]*$', `\1'))dnl
  define(type_code, type_letter`'type_kind)dnl
  define(type_name, get_typename(type_letter,type_kind))dnl
  define(atype, get_arraytype(type_letter,type_kind))dnl
--- 4,12 ----
  dnl Distributed under the GNU LGPL.  See COPYING for details.
  dnl M4 macro file to get type names from filenames
  include(`types.m4')
! define(type_letter, regexp(file, `_\([irlz]\)[^_]*$', \1))dnl
! define(type_kind, regexp(file, `_[irlz]\([0-9]*\)[^_]*$', \1))dnl
! define(rtype_kind, regexp(file, `_\([0-9]*\)_[irlz][0-9]*[^_]*$', `\1'))dnl
  define(type_code, type_letter`'type_kind)dnl
  define(type_name, get_typename(type_letter,type_kind))dnl
  define(atype, get_arraytype(type_letter,type_kind))dnl
Index: m4/matmul.m4
===================================================================
RCS file: /home/cvs/gcc/libgfortran/m4/matmul.m4,v
retrieving revision 1.1.1.1
diff -c -3 -p -r1.1.1.1 matmul.m4
*** m4/matmul.m4	3 Dec 2003 22:07:09 -0000	1.1.1.1
--- m4/matmul.m4	16 Dec 2003 17:27:10 -0000
*************** Boston, MA 02111-1307, USA.  */
*** 24,30 ****
  #include <assert.h>
  #include "libgfortran.h"'
  include(types.m4)dnl
! define(rtype_code, regexp(file, `_\([irc][0-9]+\)\.', `\1'))dnl
  define(rtype_letter,substr(rtype_code, 0, 1))dnl
  define(rtype_kind, substr(rtype_code, 1))dnl
  define(rtype,get_arraytype(rtype_letter,rtype_kind))dnl
--- 24,30 ----
  #include <assert.h>
  #include "libgfortran.h"'
  include(types.m4)dnl
! define(rtype_code, regexp(file, `_\([irz][0-9]+\)\.', `\1'))dnl
  define(rtype_letter,substr(rtype_code, 0, 1))dnl
  define(rtype_kind, substr(rtype_code, 1))dnl
  define(rtype,get_arraytype(rtype_letter,rtype_kind))dnl
Index: m4/specific.m4
===================================================================
RCS file: /home/cvs/gcc/libgfortran/m4/specific.m4,v
retrieving revision 1.1.1.1
diff -c -3 -p -r1.1.1.1 specific.m4
*** m4/specific.m4	3 Dec 2003 22:07:09 -0000	1.1.1.1
--- m4/specific.m4	16 Dec 2003 17:27:10 -0000
***************
*** 1,9 ****
  include(head.m4)
! define(type_code,regexp(file,`_\([ircl][0-9]+\).f90',`\1'))dnl
  define(type_letter,substr(type_code, 0, 1))dnl
  define(type_kind,substr(type_code, 1))dnl
  define(get_typename2, `$1 (kind=$2)')dnl
! define(get_typename, `get_typename2(ifelse($1,i,integer,ifelse($1,r,real,ifelse($1,l,logical,ifelse($1,c,complex,unknown)))),`$2')')dnl
  define(type_name, get_typename(type_letter,type_kind))dnl
  define(name, regexp(regexp(file, `[^/]*$', `\&'), `^_\([^_]*\)_', `\1'))dnl
  define(function_name,`specific__'name`_'type_code)dnl
--- 1,9 ----
  include(head.m4)
! define(type_code,regexp(file,`_\([irzl][0-9]+\).f90',`\1'))dnl
  define(type_letter,substr(type_code, 0, 1))dnl
  define(type_kind,substr(type_code, 1))dnl
  define(get_typename2, `$1 (kind=$2)')dnl
! define(get_typename, `get_typename2(ifelse($1,i,integer,ifelse($1,r,real,ifelse($1,l,logical,ifelse($1,z,complex,unknown)))),`$2')')dnl
  define(type_name, get_typename(type_letter,type_kind))dnl
  define(name, regexp(regexp(file, `[^/]*$', `\&'), `^_\([^_]*\)_', `\1'))dnl
  define(function_name,`specific__'name`_'type_code)dnl
Index: m4/specific2.m4
===================================================================
RCS file: /home/cvs/gcc/libgfortran/m4/specific2.m4,v
retrieving revision 1.1.1.1
diff -c -3 -p -r1.1.1.1 specific2.m4
*** m4/specific2.m4	3 Dec 2003 22:07:09 -0000	1.1.1.1
--- m4/specific2.m4	16 Dec 2003 17:27:10 -0000
***************
*** 1,9 ****
  include(head.m4)
! define(type_code,regexp(file,`_\([ircl][0-9]+\).f90',`\1'))dnl
  define(type_letter,substr(type_code, 0, 1))dnl
  define(type_kind,substr(type_code, 1))dnl
  define(get_typename2, `$1 (kind=$2)')dnl
! define(get_typename, `get_typename2(ifelse($1,i,integer,ifelse($1,r,real,ifelse($1,l,logical,ifelse($1,c,complex,unknown)))),`$2')')dnl
  define(type_name, get_typename(type_letter,type_kind))dnl
  define(name, regexp(regexp(file, `[^/]*$', `\&'), `^_\([^_]*\)_', `\1'))dnl
  define(function_name,`specific__'name`_'type_code)dnl
--- 1,9 ----
  include(head.m4)
! define(type_code,regexp(file,`_\([irzl][0-9]+\).f90',`\1'))dnl
  define(type_letter,substr(type_code, 0, 1))dnl
  define(type_kind,substr(type_code, 1))dnl
  define(get_typename2, `$1 (kind=$2)')dnl
! define(get_typename, `get_typename2(ifelse($1,i,integer,ifelse($1,r,real,ifelse($1,l,logical,ifelse($1,z,complex,unknown)))),`$2')')dnl
  define(type_name, get_typename(type_letter,type_kind))dnl
  define(name, regexp(regexp(file, `[^/]*$', `\&'), `^_\([^_]*\)_', `\1'))dnl
  define(function_name,`specific__'name`_'type_code)dnl
Index: m4/types.m4
===================================================================
RCS file: /home/cvs/gcc/libgfortran/m4/types.m4,v
retrieving revision 1.1.1.1
diff -c -3 -p -r1.1.1.1 types.m4
*** m4/types.m4	3 Dec 2003 22:07:09 -0000	1.1.1.1
--- m4/types.m4	16 Dec 2003 17:27:10 -0000
***************
*** 1,4 ****
  define(get_typename2, `GFC_$1_$2')dnl
! define(get_typename, `get_typename2(ifelse($1,i,INTEGER,ifelse($1,r,REAL,ifelse($1,l,LOGICAL,ifelse($1,c,COMPLEX,unknown)))),`$2')')dnl
  define(get_arraytype, `gfc_array_$1$2')dnl
  define(name, regexp(regexp(file, `[^/]*$', `\&'), `^\([^_]*\)_', `\1'))dnl
--- 1,4 ----
  define(get_typename2, `GFC_$1_$2')dnl
! define(get_typename, `get_typename2(ifelse($1,i,INTEGER,ifelse($1,r,REAL,ifelse($1,l,LOGICAL,ifelse($1,z,COMPLEX,unknown)))),`$2')')dnl
  define(get_arraytype, `gfc_array_$1$2')dnl
  define(name, regexp(regexp(file, `[^/]*$', `\&'), `^\([^_]*\)_', `\1'))dnl
Index: intrinsic_matmul.f90
===================================================================
RCS file: /home/cvs/gcc/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_matmul.f90,v
retrieving revision 1.1.1.1
diff -c -3 -p -r1.1.1.1 intrinsic_matmul.f90
*** intrinsic_matmul.f90	3 Dec 2003 22:07:05 -0000	1.1.1.1
--- intrinsic_matmul.f90	16 Dec 2003 17:56:00 -0000
*************** program intrinsic_matmul
*** 7,15 ****
--- 7,20 ----
     integer, dimension(3) :: y
     integer, dimension(2, 2) :: r
     integer, dimension(3) :: v
+    complex, dimension(3, 2) :: c
+    complex, dimension(2, 2) :: z
  
     a = reshape((/1, 2, 2, 3, 3, 4/), (/2, 3/))
     b = reshape((/1, 2, 3, 3, 4, 5/), (/3, 2/))
+    c = reshape((/(1.0, 2.0), (2.0, 3.0), (3.0, 4.0), (4.0, 5.0), (5.0, 6.0), &
+                  (6.0, 7.0)/), (/3,2/))
+ 
     x = (/1, 2/)
     y = (/1, 2, 3/)
  
*************** program intrinsic_matmul
*** 21,24 ****
--- 26,33 ----
  
     v(1:2) = matmul(a, y)
     if (any(v(1:2) .ne. (/14, 20/))) call abort
+ 
+    z = matmul(a, c)
+    if (any(z .ne. reshape((/(14.0, 20.0), (20.0, 29.0), (32.0, 38.0),&
+      (47.0, 56.0)/), (/2, 2/)))) call abort
  end program

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]