diff options
author | Daniel Franke <franke.daniel@gmail.com> | 2007-05-04 15:24:43 -0400 |
---|---|---|
committer | Daniel Franke <dfranke@gcc.gnu.org> | 2007-05-04 15:24:43 -0400 |
commit | 640afd95c0529c9d951bf0e4a5e60175f598d00a (patch) | |
tree | a9a85bb9dcfc58aafc87b2db103ade8b8b74d06c | |
parent | f1028b0230c00b8148713c3981d88930c04ce1b6 (diff) | |
download | gcc-640afd95c0529c9d951bf0e4a5e60175f598d00a.zip gcc-640afd95c0529c9d951bf0e4a5e60175f598d00a.tar.gz gcc-640afd95c0529c9d951bf0e4a5e60175f598d00a.tar.bz2 |
re PR libfortran/31760 (missing elemental applicability)
gcc/fortran:
2007-05-04 Daniel Franke <franke.daniel@gmail.com>
PR fortran/31760
* intrinsic.c (add_functions): Replaced calls to gfc_check_g77_math1
by gfc_check_fn_r to avoid checks for scalarity.
* check.c (gfc_check_besn): Removed check for scalarity.
(gfc_check_g77_math1): Removed.
* intrinsic.h (gfc_check_g77_math1): Removed.
gcc/testsuite:
2007-05-04 Daniel Franke <franke.daniel@gmail.com>
PR fortran/31760
* gfortran.dg/erf.f90: New test.
* gfortran.dg/besxy.f90: New test.
[gcc/fortran/ChangeLog was already committed in r124441 by accident]
From-SVN: r124446
-rw-r--r-- | gcc/fortran/check.c | 19 | ||||
-rw-r--r-- | gcc/fortran/intrinsic.c | 24 | ||||
-rw-r--r-- | gcc/fortran/intrinsic.h | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/besxy.f90 | 24 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/erf.f90 | 13 |
6 files changed, 55 insertions, 32 deletions
diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 0420329..722e9de 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -655,9 +655,6 @@ gfc_check_besn (gfc_expr *n, gfc_expr *x) if (type_check (n, 0, BT_INTEGER) == FAILURE) return FAILURE; - if (scalar_check (x, 1) == FAILURE) - return FAILURE; - if (type_check (x, 1, BT_REAL) == FAILURE) return FAILURE; @@ -1037,22 +1034,6 @@ gfc_check_fnum (gfc_expr *unit) } -/* This is used for the g77 one-argument Bessel functions, and the - error function. */ - -try -gfc_check_g77_math1 (gfc_expr *x) -{ - if (scalar_check (x, 0) == FAILURE) - return FAILURE; - - if (type_check (x, 0, BT_REAL) == FAILURE) - return FAILURE; - - return SUCCESS; -} - - try gfc_check_huge (gfc_expr *x) { diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c index 927fcc1..c538d07 100644 --- a/gcc/fortran/intrinsic.c +++ b/gcc/fortran/intrinsic.c @@ -1097,21 +1097,21 @@ add_functions (void) /* Bessel and Neumann functions for G77 compatibility. */ add_sym_1 ("besj0", ELEMENTAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_GNU, - gfc_check_g77_math1, NULL, gfc_resolve_g77_math1, + gfc_check_fn_r, NULL, gfc_resolve_g77_math1, x, BT_REAL, dr, REQUIRED); add_sym_1 ("dbesj0", ELEMENTAL, ACTUAL_NO, BT_REAL, dd, GFC_STD_GNU, - gfc_check_g77_math1, NULL, gfc_resolve_g77_math1, + gfc_check_fn_r, NULL, gfc_resolve_g77_math1, x, BT_REAL, dd, REQUIRED); make_generic ("besj0", GFC_ISYM_J0, GFC_STD_GNU); add_sym_1 ("besj1", ELEMENTAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_GNU, - gfc_check_g77_math1, NULL, gfc_resolve_g77_math1, + gfc_check_fn_r, NULL, gfc_resolve_g77_math1, x, BT_REAL, dr, REQUIRED); add_sym_1 ("dbesj1", ELEMENTAL, ACTUAL_NO, BT_REAL, dd, GFC_STD_GNU, - gfc_check_g77_math1, NULL, gfc_resolve_g77_math1, + gfc_check_fn_r, NULL, gfc_resolve_g77_math1, x, BT_REAL, dd, REQUIRED); make_generic ("besj1", GFC_ISYM_J1, GFC_STD_GNU); @@ -1127,21 +1127,21 @@ add_functions (void) make_generic ("besjn", GFC_ISYM_JN, GFC_STD_GNU); add_sym_1 ("besy0", ELEMENTAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_GNU, - gfc_check_g77_math1, NULL, gfc_resolve_g77_math1, + gfc_check_fn_r, NULL, gfc_resolve_g77_math1, x, BT_REAL, dr, REQUIRED); add_sym_1 ("dbesy0", ELEMENTAL, ACTUAL_NO, BT_REAL, dd, GFC_STD_GNU, - gfc_check_g77_math1, NULL, gfc_resolve_g77_math1, + gfc_check_fn_r, NULL, gfc_resolve_g77_math1, x, BT_REAL, dd, REQUIRED); make_generic ("besy0", GFC_ISYM_Y0, GFC_STD_GNU); add_sym_1 ("besy1", ELEMENTAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_GNU, - gfc_check_g77_math1, NULL, gfc_resolve_g77_math1, + gfc_check_fn_r, NULL, gfc_resolve_g77_math1, x, BT_REAL, dr, REQUIRED); add_sym_1 ("dbesy1", ELEMENTAL, ACTUAL_NO, BT_REAL, dd, GFC_STD_GNU, - gfc_check_g77_math1, NULL, gfc_resolve_g77_math1, + gfc_check_fn_r, NULL, gfc_resolve_g77_math1, x, BT_REAL, dd, REQUIRED); make_generic ("besy1", GFC_ISYM_Y1, GFC_STD_GNU); @@ -1340,21 +1340,21 @@ add_functions (void) /* G77 compatibility for the ERF() and ERFC() functions. */ add_sym_1 ("erf", ELEMENTAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_GNU, - gfc_check_g77_math1, NULL, gfc_resolve_g77_math1, + gfc_check_fn_r, NULL, gfc_resolve_g77_math1, x, BT_REAL, dr, REQUIRED); add_sym_1 ("derf", ELEMENTAL, ACTUAL_NO, BT_REAL, dd, GFC_STD_GNU, - gfc_check_g77_math1, NULL, gfc_resolve_g77_math1, + gfc_check_fn_r, NULL, gfc_resolve_g77_math1, x, BT_REAL, dd, REQUIRED); make_generic ("erf", GFC_ISYM_ERF, GFC_STD_GNU); add_sym_1 ("erfc", ELEMENTAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_GNU, - gfc_check_g77_math1, NULL, gfc_resolve_g77_math1, + gfc_check_fn_r, NULL, gfc_resolve_g77_math1, x, BT_REAL, dr, REQUIRED); add_sym_1 ("derfc", ELEMENTAL, ACTUAL_NO, BT_REAL, dd, GFC_STD_GNU, - gfc_check_g77_math1, NULL, gfc_resolve_g77_math1, + gfc_check_fn_r, NULL, gfc_resolve_g77_math1, x, BT_REAL, dd, REQUIRED); make_generic ("erfc", GFC_ISYM_ERFC, GFC_STD_GNU); diff --git a/gcc/fortran/intrinsic.h b/gcc/fortran/intrinsic.h index 8f07c05..d4a4fc5 100644 --- a/gcc/fortran/intrinsic.h +++ b/gcc/fortran/intrinsic.h @@ -62,7 +62,6 @@ try gfc_check_fn_c (gfc_expr *); try gfc_check_fn_r (gfc_expr *); try gfc_check_fn_rc (gfc_expr *); try gfc_check_fnum (gfc_expr *); -try gfc_check_g77_math1 (gfc_expr *); try gfc_check_hostnm (gfc_expr *); try gfc_check_huge (gfc_expr *); try gfc_check_i (gfc_expr *); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 02cb5b5..c8ea1b2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,11 @@ 2007-05-04 Daniel Franke <franke.daniel@gmail.com> + PR fortran/31760 + * gfortran.dg/erf.f90: New test. + * gfortran.dg/besxy.f90: New test. + +2007-05-04 Daniel Franke <franke.daniel@gmail.com> + PR fortran/22359 * gfortran.dg/fseek.f90: New test. diff --git a/gcc/testsuite/gfortran.dg/besxy.f90 b/gcc/testsuite/gfortran.dg/besxy.f90 new file mode 100644 index 0000000..5b4cbba --- /dev/null +++ b/gcc/testsuite/gfortran.dg/besxy.f90 @@ -0,0 +1,24 @@ +! { dg-do compile } +! +! Check whether BESXY functions take scalars and +! arrays as arguments (PR31760). +! +PROGRAM test_erf + REAL :: r = 0.0, ra(2) = (/ 0.0, 1.0 /) + + r = BESJ0(r) + r = BESJ1(r) + r = BESJN(0, r) + + r = BESY0(r) + r = BESY1(r) + r = BESYN(0, r) + + ra = BESJ0(ra) + ra = BESJ1(ra) + ra = BESJN(0, ra) + + ra = BESY0(ra) + ra = BESY1(ra) + ra = BESYN(0, ra) +END PROGRAM
\ No newline at end of file diff --git a/gcc/testsuite/gfortran.dg/erf.f90 b/gcc/testsuite/gfortran.dg/erf.f90 new file mode 100644 index 0000000..33d0ecc --- /dev/null +++ b/gcc/testsuite/gfortran.dg/erf.f90 @@ -0,0 +1,13 @@ +! { dg-do compile } +! +! Check whether ERF/ERFC take scalars and arrays as arguments (PR31760). +! +PROGRAM test_erf + REAL :: r = 0.0, ra(2) = (/ 0.0, 1.0 /) + + r = erf(r) + r = erfc(r) + + ra = erf(ra) + ra = erfc(ra) +END PROGRAM
\ No newline at end of file |