This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[gfortran] Intrinsics as actual arguments
- From: Paul Brook <paul at nowt dot org>
- To: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>,fortran at gcc dot gnu dot org
- Date: Sat, 11 Oct 2003 20:27:45 +0100
- Subject: [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*)