This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran 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]

[gfortran] Intrinsics as actual arguments


The attached patch contains fixes for intrinsic functions when used as 
actual arguments, and the corresponding testcase.

Applied to tree-ssa branch.

Paul

2003-10-11  Paul Brook  <paul@nowt.org>

	* iresolve.c (gfc_resolve_dint, gfc_resolve_dnint): New functions.
	(gfc_resolve_dprod): New function.
	(gfc_resolve_aint, gfc_resolve_anint): Only base name on arg type.
	* intrinsic.h (gfc_resolve_dint, gfc_resolve_dnint): Declare.
	(gfc_resolve_dprod): Declare.
	* intrinsic.c (add_functions): Use them.
	* trans-decl.c (gfc_get_extern_function_decl): Only pass one arg.
testsuite
	* gfortran.fortran-torture/execute/specifics.f90: New test.
libgfortran
	* intrinsics/dprod_r8.f90: New file.
	* Makefile.am (gfor_specific_src): Add it.
	(gfor_built_specific_src): Rename from gfor_build_specific_c.
	Add new intrinsics.
	(gfor_specific2_src): Rename from gfor_built_specific2_c.
	Add new intrinsics.
	* Makefile.in: Regenerate.
	* generated/_aint_*.f90: New files.
	* generated/_anint*.f90: New files.
	* generated/_atan2*.f90: New files.
	* generated/_mod*.f90: New files.
!   Copyright 2003 Free Software Foundation, Inc.
!   Contributed by Paul Brook <paul@nowt.org>
!
!This file is part of the GNU Fortran 95 runtime library (libgfortran).
!
!GNU libgfor is free software; you can redistribute it and/or
!modify it under the terms of the GNU Lesser General Public
!License as published by the Free Software Foundation; either
!version 2.1 of the License, or (at your option) any later version.
!
!GNU libgfor is distributed in the hope that it will be useful,
!but WITHOUT ANY WARRANTY; without even the implied warranty of
!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
!GNU Lesser General Public License for more details.
!
!You should have received a copy of the GNU Lesser General Public
!License along with libgfor; see the file COPYING.  If not,
!write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
!Boston, MA 02111-1307, USA.


elemental function specific__dprod_r8 (p1, p2)
   real (kind=4), intent (in) :: p1, p2
   real (kind=8) :: specific__dprod_r8

   specific__dprod_r8 = dprod (p1, p2)
end function
diff -uprxCVS clean/tree-ssa/gcc/fortran/intrinsic.c gcc/gcc/fortran/intrinsic.c
--- clean/tree-ssa/gcc/fortran/intrinsic.c	2003-09-14 18:08:25.000000000 +0100
+++ gcc/gcc/fortran/intrinsic.c	2003-10-11 17:43:49.000000000 +0100
@@ -751,7 +751,8 @@ add_functions (void)
 	     a, BT_REAL, dr, 0, kind, BT_INTEGER, di, 1);
 
   add_sym_1 ("dint", 1, 1, BT_REAL, dd,
-	     NULL, gfc_simplify_dint, NULL, a, BT_REAL, dd, 0);
+	     NULL, gfc_simplify_dint, gfc_resolve_dint,
+	     a, BT_REAL, dd, 0);
 
   make_generic ("aint", GFC_ISYM_AINT);
 
@@ -771,7 +772,8 @@ add_functions (void)
 	     a, BT_REAL, dr, 0, kind, BT_INTEGER, di, 1);
 
   add_sym_1 ("dnint", 1, 1, BT_REAL, dd,
-	   NULL, gfc_simplify_dnint, NULL, a, BT_REAL, dd, 0);
+	     NULL, gfc_simplify_dnint, gfc_resolve_dnint,
+	     a, BT_REAL, dd, 0);
 
   make_generic ("anint", GFC_ISYM_ANINT);
 
@@ -935,7 +937,7 @@ add_functions (void)
   make_generic ("dot_product", GFC_ISYM_DOT_PRODUCT);
 
   add_sym_2 ("dprod", 1, 1, BT_REAL, dd,
-	     NULL, gfc_simplify_dprod, NULL,
+	     NULL, gfc_simplify_dprod, gfc_resolve_dprod,
 	     x, BT_REAL, dr, 0, y, BT_REAL, dr, 0);
 
   make_generic ("dprod", GFC_ISYM_DPROD);
diff -uprxCVS clean/tree-ssa/gcc/fortran/intrinsic.h gcc/gcc/fortran/intrinsic.h
--- clean/tree-ssa/gcc/fortran/intrinsic.h	2003-09-14 18:08:25.000000000 +0100
+++ gcc/gcc/fortran/intrinsic.h	2003-10-11 18:01:21.000000000 +0100
@@ -214,8 +214,10 @@ void gfc_resolve_abs (gfc_expr *, gfc_ex
 void gfc_resolve_acos (gfc_expr *, gfc_expr *);
 void gfc_resolve_aimag (gfc_expr *, gfc_expr *);
 void gfc_resolve_aint (gfc_expr *, gfc_expr *, gfc_expr *);
+void gfc_resolve_dint (gfc_expr *, gfc_expr *);
 void gfc_resolve_all (gfc_expr *, gfc_expr *, gfc_expr *);
 void gfc_resolve_anint (gfc_expr *, gfc_expr *, gfc_expr *);
+void gfc_resolve_dnint (gfc_expr *, gfc_expr *);
 void gfc_resolve_any (gfc_expr *, gfc_expr *, gfc_expr *);
 void gfc_resolve_asin (gfc_expr *, gfc_expr *);
 void gfc_resolve_atan (gfc_expr *, gfc_expr *);
@@ -232,6 +234,7 @@ void gfc_resolve_cshift (gfc_expr *, gfc
 void gfc_resolve_dble (gfc_expr *, gfc_expr *);
 void gfc_resolve_dim (gfc_expr *, gfc_expr *, gfc_expr *);
 void gfc_resolve_dot_product (gfc_expr *, gfc_expr *, gfc_expr *);
+void gfc_resolve_dprod (gfc_expr *, gfc_expr *, gfc_expr *);
 void gfc_resolve_eoshift (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *,
 			  gfc_expr *);
 void gfc_resolve_exp (gfc_expr *, gfc_expr *);
diff -uprxCVS clean/tree-ssa/gcc/fortran/iresolve.c gcc/gcc/fortran/iresolve.c
--- clean/tree-ssa/gcc/fortran/iresolve.c	2003-09-18 01:11:03.000000000 +0100
+++ gcc/gcc/fortran/iresolve.c	2003-10-11 17:48:35.000000000 +0100
@@ -163,9 +163,17 @@ gfc_resolve_aint (gfc_expr * f, gfc_expr
   f->ts.type = a->ts.type;
   f->ts.kind = (kind == NULL) ? a->ts.kind : mpz_get_si (kind->value.integer);
 
+  /* The resolved name is only used for specific intrinsics where
+     the return kind is the same as the arg kind.  */
   f->value.function.name =
-    gfc_get_string ("__aint_%d_%c%d", f->ts.kind,
-		    gfc_type_letter (a->ts.type), a->ts.kind);
+    gfc_get_string ("__aint_%c%d", gfc_type_letter (a->ts.type), a->ts.kind);
+}
+
+
+void
+gfc_resolve_dint (gfc_expr * f, gfc_expr * a)
+{
+  gfc_resolve_aint (f, a, NULL);
 }
 
 
@@ -194,9 +202,17 @@ gfc_resolve_anint (gfc_expr * f, gfc_exp
   f->ts.type = a->ts.type;
   f->ts.kind = (kind == NULL) ? a->ts.kind : mpz_get_si (kind->value.integer);
 
+  /* The resolved name is only used for specific intrinsics where
+     the return kind is the same as the arg kind.  */
   f->value.function.name =
-    gfc_get_string ("__anint_%d_%c%d", f->ts.kind,
-		    gfc_type_letter (a->ts.type), a->ts.kind);
+    gfc_get_string ("__anint_%c%d", gfc_type_letter (a->ts.type), a->ts.kind);
+}
+
+
+void
+gfc_resolve_dnint (gfc_expr * f, gfc_expr * a)
+{
+  gfc_resolve_anint (f, a, NULL);
 }
 
 
@@ -427,6 +443,18 @@ gfc_resolve_dot_product (gfc_expr * f, g
 
 
 void
+gfc_resolve_dprod (gfc_expr * f,
+		   gfc_expr * a ATTRIBUTE_UNUSED,
+		   gfc_expr * b ATTRIBUTE_UNUSED)
+{
+  f->ts.kind = gfc_default_double_kind ();
+  f->ts.type = BT_REAL;
+
+  f->value.function.name = gfc_get_string ("__dprod_r%d", f->ts.kind);
+}
+
+
+void
 gfc_resolve_eoshift (gfc_expr * f, gfc_expr * array,
 		     gfc_expr * shift,
 		     gfc_expr * boundary,
diff -uprxCVS clean/tree-ssa/gcc/fortran/trans-decl.c gcc/gcc/fortran/trans-decl.c
--- clean/tree-ssa/gcc/fortran/trans-decl.c	2003-10-05 21:54:51.000000000 +0100
+++ gcc/gcc/fortran/trans-decl.c	2003-10-11 16:55:01.000000000 +0100
@@ -826,11 +826,6 @@ gfc_get_symbol_decl (gfc_symbol * sym)
 }
 
 
-/* None of the specific intrinsics which can be passed as actual arguments
-   for dummy procedures has more then two parameters.  */
-
-#define GFC_MAX_SPECIFIC_ARGS 2
-
 /* Get a basic decl for an external function.  */
 
 tree
@@ -840,9 +835,7 @@ gfc_get_extern_function_decl (gfc_symbol
   tree fndecl;
   gfc_expr e;
   gfc_intrinsic_sym *isym;
-  gfc_intrinsic_arg *formal;
-  gfc_expr argexpr[GFC_MAX_SPECIFIC_ARGS];
-  int n;
+  gfc_expr argexpr;
   char s[GFC_MAX_SYMBOL_LEN];
   tree name;
   tree mangled_name;
@@ -852,38 +845,27 @@ gfc_get_extern_function_decl (gfc_symbol
 
   if (sym->attr.intrinsic)
     {
-      /* Call the resolution function to get the actual name.  */
+      /* Call the resolution function to get the actual name.  This is
+         a nasty hack which relies on the resolution functions only looking
+	 at the first argument.  We pass NULL for the second argument
+	 otherwise things like AINT get confused.  */
       isym = gfc_find_function (sym->name);
-      assert (isym->resolve.f0);
+      assert (isym->resolve.f0 != NULL);
 
       memset (&e, 0, sizeof (e));
-      memset (argexpr, 0, sizeof (argexpr));
       e.expr_type = EXPR_FUNCTION;
-      formal = NULL;
-      n = 0;
 
-      for (formal = isym->formal, n = 0; formal; formal = formal->next, n++)
-	{
-	  assert (n < GFC_MAX_SPECIFIC_ARGS);
-	  argexpr[n].ts = formal->ts;
-	}
+      memset (&argexpr, 0, sizeof (argexpr));
+      assert (isym->formal);
+      argexpr.ts = isym->formal->ts;
 
-      switch (n)
+      if (isym->formal->next == NULL)
+	isym->resolve.f1 (&e, &argexpr);
+      else
 	{
-	case 0:
-	  isym->resolve.f0 (&e);
-	  break;
-
-	case 1:
-	  isym->resolve.f1 (&e, &argexpr[0]);
-	  break;
-
-	case 2:
-	  isym->resolve.f2 (&e, &argexpr[0], &argexpr[1]);
-	  break;
-
-	default:
-	  abort ();
+	  /* All specific intrinsics take one or two arguments.  */
+	  assert (isym->formal->next->next == NULL);
+	  isym->resolve.f2 (&e, &argexpr, NULL);
 	}
       sprintf (s, "specific%s", e.value.function.name);
       name = get_identifier (s);
diff -uprxCVS clean/tree-ssa/gcc/testsuite/gfortran.fortran-torture/execute/specifics.f90 gcc/gcc/testsuite/gfortran.fortran-torture/execute/specifics.f90
--- clean/tree-ssa/gcc/testsuite/gfortran.fortran-torture/execute/specifics.f90	2003-10-11 17:07:21.000000000 +0100
+++ gcc/gcc/testsuite/gfortran.fortran-torture/execute/specifics.f90	2003-10-11 20:16:35.000000000 +0100
@@ -8,7 +8,7 @@ contains
 function diff(a, b)
   real a, b
   logical diff
-  diff = (abs(a - b) .gt. 0.0001)
+  diff = (abs(a - b) .gt. 0.00001)
 end function
 end subroutine
 
@@ -21,50 +21,113 @@ contains
 function diff(a, b)
   double precision a, b
   logical diff
-  diff = (abs(a - b) .gt. 0d0001)
+  diff = (abs(a - b) .gt. 0.00001d0)
 end function
 end subroutine
 
+subroutine test_r2(fn, val1, val2, res)
+  real fn
+  real val1, val2, res
 
-subroutine test_ir (fn, val, res)
-  integer fn
-  real val
-  integer res
-
-  if (fn(val) .ne. res) call abort
+  if (diff(fn(val1, val2), res)) call abort
+contains
+function diff(a, b)
+  real a, b
+  logical diff
+  diff = (abs(a - b) .gt. 0.00001)
+end function
 end subroutine
 
-subroutine test_id (fn, val, res)
-  integer fn
-  double precision val
-  integer res
+subroutine test_d2(fn, val1, val2, res)
+  double precision fn
+  double precision val1, val2, res
 
-  if (fn(val) .ne. res) call abort
+  if (diff(fn(val1, val2), res)) call abort
+contains
+function diff(a, b)
+  double precision a, b
+  logical diff
+  diff = (abs(a - b) .gt. 0.00001d0)
+end function
+end subroutine
+
+subroutine test_dprod(fn)
+  if (abs (fn (2.0, 3.0) - 6d0) .gt. 0.00001) call abort
 end subroutine
 
 program specifics
   intrinsic abs
   intrinsic aint
+  intrinsic anint
+  intrinsic acos
+  intrinsic asin
+  intrinsic atan
   intrinsic cos
   intrinsic sin
+  intrinsic tan
+  intrinsic cosh
+  intrinsic sinh
+  intrinsic tanh
+  intrinsic alog
   intrinsic exp
+  intrinsic sign
+  intrinsic mod
 
   intrinsic dabs
   intrinsic dint
+  intrinsic dnint
+  intrinsic dacos
+  intrinsic dasin
+  intrinsic datan
   intrinsic dcos
   intrinsic dsin
+  intrinsic dtan
+  intrinsic dcosh
+  intrinsic dsinh
+  intrinsic dtanh
+  intrinsic dlog
   intrinsic dexp
+  intrinsic dsign
+  intrinsic dmod
+
+  intrinsic dprod
+
+  !TODO: Also test complex variants
 
   call test_r (abs, -1.0, abs(-1.0))
-  call test_ir (aint, 1.5, 1)
+  call test_r (aint, 1.7, 1.0)
+  call test_r (anint, 1.7, 2.0)
+  call test_r (acos, 0.5, acos(0.5))
+  call test_r (asin, 0.5, asin(0.5))
+  call test_r (atan, 0.5, atan(0.5))
   call test_r (cos, 1.0, cos(1.0))
   call test_r (sin, 1.0, sin(1.0))
+  call test_r (tan, 1.0, tan(1.0))
+  call test_r (cosh, 1.0, cosh(1.0))
+  call test_r (sinh, 1.0, sinh(1.0))
+  call test_r (tanh, 1.0, tanh(1.0))
+  call test_r (alog, 2.0, alog(2.0))
   call test_r (exp, 1.0, exp(1.0))
+  call test_r2 (sign, 1.0, -2.0, sign(1.0, -2.0))
+  call test_r2 (mod, 3.5, 2.0, mod(3.5, 2.0))
   
   call test_d (dabs, -1d0, abs(-1d0))
-  call test_id (dint, 1.5d0, 1)
-  call test_d (dcos, 1d0, cos(1d0))
-  call test_d (dsin, 1d0, sin(1d0))
+  call test_d (dint, 1.7d0, 1d0)
+  call test_d (dnint, 1.7d0, 2d0)
+  call test_d (dacos, 0.5d0, dacos(0.5d0))
+  call test_d (dasin, 0.5d0, dasin(0.5d0))
+  call test_d (datan, 0.5d0, datan(0.5d0))
+  call test_d (dcos, 1d0, dcos(1d0))
+  call test_d (dsin, 1d0, dsin(1d0))
+  call test_d (dtan, 1d0, dtan(1d0))
+  call test_d (dcosh, 1d0, dcosh(1d0))
+  call test_d (dsinh, 1d0, dsinh(1d0))
+  call test_d (dtanh, 1d0, dtanh(1d0))
+  call test_d (dlog, 2d0, dlog(2d0))
   call test_d (dexp, 1d0, dexp(1d0))
+  call test_d2 (dsign, 1d0, -2d0, sign(1d0, -2d0))
+  call test_d2 (dmod, 3.5d0, 2d0, dmod(3.5d0, 2d0))
+
+  call test_dprod(dprod)
 end program
 
diff -uprxCVS clean/tree-ssa/libgfortran/Makefile.am gcc/libgfortran/Makefile.am
--- clean/tree-ssa/libgfortran/Makefile.am	2003-09-20 13:37:09.000000000 +0100
+++ gcc/libgfortran/Makefile.am	2003-10-11 18:31:22.000000000 +0100
@@ -232,7 +232,7 @@ hyp_c4.lo \
 hyp_c8.lo
 
 # Machine generated specifics
-gfor_built_specific_c= \
+gfor_built_specific_src= \
 generated/_abs_r4.f90 \
 generated/_abs_r8.f90 \
 generated/_exp_r4.f90 \
@@ -272,9 +272,13 @@ generated/_cosh_r8.f90 \
 generated/_tanh_r4.f90 \
 generated/_tanh_r8.f90 \
 generated/_conjg_c4.f90 \
-generated/_conjg_c8.f90
+generated/_conjg_c8.f90 \
+generated/_aint_r4.f90 \
+generated/_aint_r8.f90 \
+generated/_anint_r4.f90 \
+generated/_anint_r8.f90
 
-gfor_built_specific2_c= \
+gfor_built_specific2_src= \
 generated/_sign_i4.f90 \
 generated/_sign_i8.f90 \
 generated/_sign_r4.f90 \
@@ -282,31 +286,32 @@ generated/_sign_r8.f90 \
 generated/_dim_i4.f90 \
 generated/_dim_i8.f90 \
 generated/_dim_r4.f90 \
-generated/_dim_r8.f90
+generated/_dim_r8.f90 \
+generated/_atan2_r4.f90 \
+generated/_atan2_r8.f90 \
+generated/_mod_i4.f90 \
+generated/_mod_i8.f90 \
+generated/_mod_r4.f90 \
+generated/_mod_r8.f90
 #specific intrinsics requiring manal code
 #gfor_specific_c= \
-intrinsics/_sign \
-intrinsics/_dim.c \
 intrinsics/_aimag.c \
 intrinsics/_cabs.c \
-intrinsics/_mod.c \
-intrinsics/_aint.c \
-intrinsics/_anint.c \
-intrinsics/_atan2.c \
-intrinsics/_dprod.c \
 foo
-gfor_specific_c= \
-$(gfor_built_specific_c) \
-$(gfor_built_specific2_c)
+
+gfor_specific_src= \
+$(gfor_built_specific_src) \
+$(gfor_built_specific2_src) \
+intrinsics/dprod_r8.f90
 
 gfor_cmath_src= $(gfor_math_trig_c) $(gfor_math_exp_c) $(gfor_math_hyp_c)
 gfor_cmath_obj= $(gfor_math_trig_obj) $(gfor_math_exp_obj) \
     $(gfor_math_hyp_obj)
 
-BUILT_SOURCES=$(gfor_built_src) $(gfor_cmath_src) $(gfor_built_specific_c) \
-    $(gfor_built_specific2_c)
+BUILT_SOURCES=$(gfor_built_src) $(gfor_cmath_src) $(gfor_built_specific_src) \
+    $(gfor_built_specific2_src)
 libgfortran_la_SOURCES = $(gfor_src) $(gfor_built_src) $(gfor_io_src) \
-    $(gfor_helper_src) $(gfor_io_headers) $(gfor_specific_c)
+    $(gfor_helper_src) $(gfor_io_headers) $(gfor_specific_src)
 
 EXTRA_libgfortran_la_SOURCES = $(gfor_cmath_src)
 
@@ -396,10 +401,10 @@ $(gfor_math_exp_c): m4/cexp.m4 m4/mtype.
 $(gfor_math_hyp_c): m4/chyp.m4 m4/mtype.m4
 	m4 -Dfile=$@ -I$(srcdir)/m4 chyp.m4 > $@
 
-$(gfor_built_specific_c): m4/specific.m4 m4/head.m4
+$(gfor_built_specific_src): m4/specific.m4 m4/head.m4
 	m4 -Dfile=$@ -I$(srcdir)/m4 specific.m4 > $@
 
-$(gfor_built_specific2_c): m4/specific2.m4 m4/head.m4
+$(gfor_built_specific2_src): m4/specific2.m4 m4/head.m4
 	m4 -Dfile=$@ -I$(srcdir)/m4 specific2.m4 > $@
 ## end of maintainer mode only rules
 endif
diff -uprxCVS clean/tree-ssa/libgfortran/Makefile.in gcc/libgfortran/Makefile.in
--- clean/tree-ssa/libgfortran/Makefile.in	2003-09-20 13:37:09.000000000 +0100
+++ gcc/libgfortran/Makefile.in	2003-10-11 18:31:30.000000000 +0100
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.7.8 from Makefile.am.
 # @configure_input@
 
 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
@@ -392,7 +392,7 @@ hyp_c8.lo
 
 
 # Machine generated specifics
-gfor_built_specific_c = \
+gfor_built_specific_src = \
 generated/_abs_r4.f90 \
 generated/_abs_r8.f90 \
 generated/_exp_r4.f90 \
@@ -432,10 +432,14 @@ generated/_cosh_r8.f90 \
 generated/_tanh_r4.f90 \
 generated/_tanh_r8.f90 \
 generated/_conjg_c4.f90 \
-generated/_conjg_c8.f90
+generated/_conjg_c8.f90 \
+generated/_aint_r4.f90 \
+generated/_aint_r8.f90 \
+generated/_anint_r4.f90 \
+generated/_anint_r8.f90
 
 
-gfor_built_specific2_c = \
+gfor_built_specific2_src = \
 generated/_sign_i4.f90 \
 generated/_sign_i8.f90 \
 generated/_sign_r4.f90 \
@@ -443,23 +447,24 @@ generated/_sign_r8.f90 \
 generated/_dim_i4.f90 \
 generated/_dim_i8.f90 \
 generated/_dim_r4.f90 \
-generated/_dim_r8.f90
+generated/_dim_r8.f90 \
+generated/_atan2_r4.f90 \
+generated/_atan2_r8.f90 \
+generated/_mod_i4.f90 \
+generated/_mod_i8.f90 \
+generated/_mod_r4.f90 \
+generated/_mod_r8.f90
+
 
 #specific intrinsics requiring manal code
 #gfor_specific_c= \
-#intrinsics/_sign \
-#intrinsics/_dim.c \
 #intrinsics/_aimag.c \
 #intrinsics/_cabs.c \
-#intrinsics/_mod.c \
-#intrinsics/_aint.c \
-#intrinsics/_anint.c \
-#intrinsics/_atan2.c \
-#intrinsics/_dprod.c \
 #foo
-gfor_specific_c = \
-$(gfor_built_specific_c) \
-$(gfor_built_specific2_c)
+gfor_specific_src = \
+$(gfor_built_specific_src) \
+$(gfor_built_specific2_src) \
+intrinsics/dprod_r8.f90
 
 
 gfor_cmath_src = $(gfor_math_trig_c) $(gfor_math_exp_c) $(gfor_math_hyp_c)
@@ -467,11 +472,11 @@ gfor_cmath_obj = $(gfor_math_trig_obj) $
     $(gfor_math_hyp_obj)
 
 
-BUILT_SOURCES = $(gfor_built_src) $(gfor_cmath_src) $(gfor_built_specific_c) \
-    $(gfor_built_specific2_c)
+BUILT_SOURCES = $(gfor_built_src) $(gfor_cmath_src) $(gfor_built_specific_src) \
+    $(gfor_built_specific2_src)
 
 libgfortran_la_SOURCES = $(gfor_src) $(gfor_built_src) $(gfor_io_src) \
-    $(gfor_helper_src) $(gfor_io_headers) $(gfor_specific_c)
+    $(gfor_helper_src) $(gfor_io_headers) $(gfor_specific_src)
 
 
 EXTRA_libgfortran_la_SOURCES = $(gfor_cmath_src)
@@ -552,10 +557,12 @@ am__objects_28 = _abs_r4.lo _abs_r8.lo _
 	_atan_r4.lo _atan_r8.lo _sin_r4.lo _sin_r8.lo _sin_c4.lo \
 	_sin_c8.lo _cos_r4.lo _cos_r8.lo _cos_c4.lo _cos_c8.lo \
 	_tan_r4.lo _tan_r8.lo _sinh_r4.lo _sinh_r8.lo _cosh_r4.lo \
-	_cosh_r8.lo _tanh_r4.lo _tanh_r8.lo _conjg_c4.lo _conjg_c8.lo
+	_cosh_r8.lo _tanh_r4.lo _tanh_r8.lo _conjg_c4.lo _conjg_c8.lo \
+	_aint_r4.lo _aint_r8.lo _anint_r4.lo _anint_r8.lo
 am__objects_29 = _sign_i4.lo _sign_i8.lo _sign_r4.lo _sign_r8.lo \
-	_dim_i4.lo _dim_i8.lo _dim_r4.lo _dim_r8.lo
-am__objects_30 = $(am__objects_28) $(am__objects_29)
+	_dim_i4.lo _dim_i8.lo _dim_r4.lo _dim_r8.lo _atan2_r4.lo \
+	_atan2_r8.lo _mod_i4.lo _mod_i8.lo _mod_r4.lo _mod_r8.lo
+am__objects_30 = $(am__objects_28) $(am__objects_29) dprod_r8.lo
 am_libgfortran_la_OBJECTS = $(am__objects_1) $(am__objects_24) \
 	$(am__objects_25) $(am__objects_26) $(am__objects_27) \
 	$(am__objects_30)
@@ -5769,6 +5776,42 @@ _conjg_c8.obj: generated/_conjg_c8.f90
 _conjg_c8.lo: generated/_conjg_c8.f90
 	$(LIBTOOL) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _conjg_c8.lo `test -f 'generated/_conjg_c8.f90' || echo '$(srcdir)/'`generated/_conjg_c8.f90
 
+_aint_r4.o: generated/_aint_r4.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _aint_r4.o `test -f 'generated/_aint_r4.f90' || echo '$(srcdir)/'`generated/_aint_r4.f90
+
+_aint_r4.obj: generated/_aint_r4.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _aint_r4.obj `if test -f 'generated/_aint_r4.f90'; then $(CYGPATH_W) 'generated/_aint_r4.f90'; else $(CYGPATH_W) '$(srcdir)/generated/_aint_r4.f90'; fi`
+
+_aint_r4.lo: generated/_aint_r4.f90
+	$(LIBTOOL) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _aint_r4.lo `test -f 'generated/_aint_r4.f90' || echo '$(srcdir)/'`generated/_aint_r4.f90
+
+_aint_r8.o: generated/_aint_r8.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _aint_r8.o `test -f 'generated/_aint_r8.f90' || echo '$(srcdir)/'`generated/_aint_r8.f90
+
+_aint_r8.obj: generated/_aint_r8.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _aint_r8.obj `if test -f 'generated/_aint_r8.f90'; then $(CYGPATH_W) 'generated/_aint_r8.f90'; else $(CYGPATH_W) '$(srcdir)/generated/_aint_r8.f90'; fi`
+
+_aint_r8.lo: generated/_aint_r8.f90
+	$(LIBTOOL) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _aint_r8.lo `test -f 'generated/_aint_r8.f90' || echo '$(srcdir)/'`generated/_aint_r8.f90
+
+_anint_r4.o: generated/_anint_r4.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _anint_r4.o `test -f 'generated/_anint_r4.f90' || echo '$(srcdir)/'`generated/_anint_r4.f90
+
+_anint_r4.obj: generated/_anint_r4.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _anint_r4.obj `if test -f 'generated/_anint_r4.f90'; then $(CYGPATH_W) 'generated/_anint_r4.f90'; else $(CYGPATH_W) '$(srcdir)/generated/_anint_r4.f90'; fi`
+
+_anint_r4.lo: generated/_anint_r4.f90
+	$(LIBTOOL) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _anint_r4.lo `test -f 'generated/_anint_r4.f90' || echo '$(srcdir)/'`generated/_anint_r4.f90
+
+_anint_r8.o: generated/_anint_r8.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _anint_r8.o `test -f 'generated/_anint_r8.f90' || echo '$(srcdir)/'`generated/_anint_r8.f90
+
+_anint_r8.obj: generated/_anint_r8.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _anint_r8.obj `if test -f 'generated/_anint_r8.f90'; then $(CYGPATH_W) 'generated/_anint_r8.f90'; else $(CYGPATH_W) '$(srcdir)/generated/_anint_r8.f90'; fi`
+
+_anint_r8.lo: generated/_anint_r8.f90
+	$(LIBTOOL) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _anint_r8.lo `test -f 'generated/_anint_r8.f90' || echo '$(srcdir)/'`generated/_anint_r8.f90
+
 _sign_i4.o: generated/_sign_i4.f90
 	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _sign_i4.o `test -f 'generated/_sign_i4.f90' || echo '$(srcdir)/'`generated/_sign_i4.f90
 
@@ -5841,6 +5884,69 @@ _dim_r8.obj: generated/_dim_r8.f90
 _dim_r8.lo: generated/_dim_r8.f90
 	$(LIBTOOL) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _dim_r8.lo `test -f 'generated/_dim_r8.f90' || echo '$(srcdir)/'`generated/_dim_r8.f90
 
+_atan2_r4.o: generated/_atan2_r4.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _atan2_r4.o `test -f 'generated/_atan2_r4.f90' || echo '$(srcdir)/'`generated/_atan2_r4.f90
+
+_atan2_r4.obj: generated/_atan2_r4.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _atan2_r4.obj `if test -f 'generated/_atan2_r4.f90'; then $(CYGPATH_W) 'generated/_atan2_r4.f90'; else $(CYGPATH_W) '$(srcdir)/generated/_atan2_r4.f90'; fi`
+
+_atan2_r4.lo: generated/_atan2_r4.f90
+	$(LIBTOOL) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _atan2_r4.lo `test -f 'generated/_atan2_r4.f90' || echo '$(srcdir)/'`generated/_atan2_r4.f90
+
+_atan2_r8.o: generated/_atan2_r8.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _atan2_r8.o `test -f 'generated/_atan2_r8.f90' || echo '$(srcdir)/'`generated/_atan2_r8.f90
+
+_atan2_r8.obj: generated/_atan2_r8.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _atan2_r8.obj `if test -f 'generated/_atan2_r8.f90'; then $(CYGPATH_W) 'generated/_atan2_r8.f90'; else $(CYGPATH_W) '$(srcdir)/generated/_atan2_r8.f90'; fi`
+
+_atan2_r8.lo: generated/_atan2_r8.f90
+	$(LIBTOOL) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _atan2_r8.lo `test -f 'generated/_atan2_r8.f90' || echo '$(srcdir)/'`generated/_atan2_r8.f90
+
+_mod_i4.o: generated/_mod_i4.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _mod_i4.o `test -f 'generated/_mod_i4.f90' || echo '$(srcdir)/'`generated/_mod_i4.f90
+
+_mod_i4.obj: generated/_mod_i4.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _mod_i4.obj `if test -f 'generated/_mod_i4.f90'; then $(CYGPATH_W) 'generated/_mod_i4.f90'; else $(CYGPATH_W) '$(srcdir)/generated/_mod_i4.f90'; fi`
+
+_mod_i4.lo: generated/_mod_i4.f90
+	$(LIBTOOL) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _mod_i4.lo `test -f 'generated/_mod_i4.f90' || echo '$(srcdir)/'`generated/_mod_i4.f90
+
+_mod_i8.o: generated/_mod_i8.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _mod_i8.o `test -f 'generated/_mod_i8.f90' || echo '$(srcdir)/'`generated/_mod_i8.f90
+
+_mod_i8.obj: generated/_mod_i8.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _mod_i8.obj `if test -f 'generated/_mod_i8.f90'; then $(CYGPATH_W) 'generated/_mod_i8.f90'; else $(CYGPATH_W) '$(srcdir)/generated/_mod_i8.f90'; fi`
+
+_mod_i8.lo: generated/_mod_i8.f90
+	$(LIBTOOL) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _mod_i8.lo `test -f 'generated/_mod_i8.f90' || echo '$(srcdir)/'`generated/_mod_i8.f90
+
+_mod_r4.o: generated/_mod_r4.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _mod_r4.o `test -f 'generated/_mod_r4.f90' || echo '$(srcdir)/'`generated/_mod_r4.f90
+
+_mod_r4.obj: generated/_mod_r4.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _mod_r4.obj `if test -f 'generated/_mod_r4.f90'; then $(CYGPATH_W) 'generated/_mod_r4.f90'; else $(CYGPATH_W) '$(srcdir)/generated/_mod_r4.f90'; fi`
+
+_mod_r4.lo: generated/_mod_r4.f90
+	$(LIBTOOL) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _mod_r4.lo `test -f 'generated/_mod_r4.f90' || echo '$(srcdir)/'`generated/_mod_r4.f90
+
+_mod_r8.o: generated/_mod_r8.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _mod_r8.o `test -f 'generated/_mod_r8.f90' || echo '$(srcdir)/'`generated/_mod_r8.f90
+
+_mod_r8.obj: generated/_mod_r8.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _mod_r8.obj `if test -f 'generated/_mod_r8.f90'; then $(CYGPATH_W) 'generated/_mod_r8.f90'; else $(CYGPATH_W) '$(srcdir)/generated/_mod_r8.f90'; fi`
+
+_mod_r8.lo: generated/_mod_r8.f90
+	$(LIBTOOL) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS) -c -o _mod_r8.lo `test -f 'generated/_mod_r8.f90' || echo '$(srcdir)/'`generated/_mod_r8.f90
+
+dprod_r8.o: intrinsics/dprod_r8.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o dprod_r8.o `test -f 'intrinsics/dprod_r8.f90' || echo '$(srcdir)/'`intrinsics/dprod_r8.f90
+
+dprod_r8.obj: intrinsics/dprod_r8.f90
+	$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o dprod_r8.obj `if test -f 'intrinsics/dprod_r8.f90'; then $(CYGPATH_W) 'intrinsics/dprod_r8.f90'; else $(CYGPATH_W) '$(srcdir)/intrinsics/dprod_r8.f90'; fi`
+
+dprod_r8.lo: intrinsics/dprod_r8.f90
+	$(LIBTOOL) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS) -c -o dprod_r8.lo `test -f 'intrinsics/dprod_r8.f90' || echo '$(srcdir)/'`intrinsics/dprod_r8.f90
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
@@ -6059,7 +6165,6 @@ distclean: distclean-am
 	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
 	-rm -rf ./$(DEPDIR)
 	-rm -f Makefile
-
 distclean-am: clean-am distclean-compile distclean-generic distclean-hdr \
 	distclean-libtool distclean-tags
 
@@ -6086,7 +6191,6 @@ maintainer-clean: maintainer-clean-am
 	-rm -rf $(top_srcdir)/autom4te.cache
 	-rm -rf ./$(DEPDIR)
 	-rm -f Makefile
-
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
 mostlyclean: mostlyclean-am
@@ -6194,10 +6298,10 @@ uninstall-am: uninstall-info-am uninstal
 @MAINTAINER_MODE_TRUE@$(gfor_math_hyp_c): m4/chyp.m4 m4/mtype.m4
 @MAINTAINER_MODE_TRUE@	m4 -Dfile=$@ -I$(srcdir)/m4 chyp.m4 > $@
 
-@MAINTAINER_MODE_TRUE@$(gfor_built_specific_c): m4/specific.m4 m4/head.m4
+@MAINTAINER_MODE_TRUE@$(gfor_built_specific_src): m4/specific.m4 m4/head.m4
 @MAINTAINER_MODE_TRUE@	m4 -Dfile=$@ -I$(srcdir)/m4 specific.m4 > $@
 
-@MAINTAINER_MODE_TRUE@$(gfor_built_specific2_c): m4/specific2.m4 m4/head.m4
+@MAINTAINER_MODE_TRUE@$(gfor_built_specific2_src): m4/specific2.m4 m4/head.m4
 @MAINTAINER_MODE_TRUE@	m4 -Dfile=$@ -I$(srcdir)/m4 specific2.m4 > $@
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff -uprxCVS clean/tree-ssa/libgfortran/aclocal.m4 gcc/libgfortran/aclocal.m4
--- clean/tree-ssa/libgfortran/aclocal.m4	2003-09-19 20:36:49.000000000 +0100
+++ gcc/libgfortran/aclocal.m4	2003-10-11 18:08:29.000000000 +0100
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.7.7 -*- Autoconf -*-
+# generated automatically by aclocal 1.7.8 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
 # Free Software Foundation, Inc.
@@ -249,7 +249,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_
 # Call AM_AUTOMAKE_VERSION so it can be traced.
 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-	 [AM_AUTOMAKE_VERSION([1.7.7])])
+	 [AM_AUTOMAKE_VERSION([1.7.8])])
 
 # Helper functions for option handling.                    -*- Autoconf -*-
 
diff -uprxCVS clean/tree-ssa/libgfortran/configure gcc/libgfortran/configure
--- clean/tree-ssa/libgfortran/configure	2003-09-19 20:36:49.000000000 +0100
+++ gcc/libgfortran/configure	2003-10-11 18:08:51.000000000 +0100
@@ -6027,7 +6027,7 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*li
         x86_64-*linux*)
           LD="${LD-ld} -m elf_i386"
           ;;
-        ppc64-*linux*)
+        ppc64-*linux*|powerpc64-*linux*)
           LD="${LD-ld} -m elf32ppclinux"
           ;;
         s390x-*linux*)

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