diff options
author | Tobias Burnus <burnus@gcc.gnu.org> | 2010-08-21 12:12:53 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2010-08-21 12:12:53 +0200 |
commit | 47b996944dcb50a831c1332b8ea667ff6f95fa95 (patch) | |
tree | f963b78e966a67d516f6105c26a4b775d5c2dcfd /gcc/fortran/trans-intrinsic.c | |
parent | 508e475706c3560a86b08446e1bb764773b93ed9 (diff) | |
download | gcc-47b996944dcb50a831c1332b8ea667ff6f95fa95.zip gcc-47b996944dcb50a831c1332b8ea667ff6f95fa95.tar.gz gcc-47b996944dcb50a831c1332b8ea667ff6f95fa95.tar.bz2 |
re PR fortran/36158 (Transformational function BESSEL_YN(n1,n2,x) and BESSEL_JN missing)
2010-08-21 Tobias Burnus <burnus@net-b.de>
PR fortran/36158
PR fortran/33197
* intrinsic.c (add_sym): Init value attribute.
(set_attr_value): New function.
(add_functions) Use it and add JN/YN resolvers.
* symbol.c (gfc_copy_formal_args_intr): Copy value attr.
* intrinsic.h (gfc_resolve_bessel_n2): New prototype.
* gfortran.h (gfc_intrinsic_arg): Add value attribute.
* iresolve.c (gfc_resolve_bessel_n2): New function.
* trans-intrinsic.c (gfc_get_symbol_for_expr): Create
formal arg list.
(gfc_conv_intrinsic_function,gfc_is_intrinsic_libcall):
Add GFC_ISYM_JN2/GFC_ISYM_YN2 as case value.
* simplify.c (): For YN set to -INF if previous values
was -INF.
* trans-expr.c (gfc_conv_procedure_call): Don't crash
if sym->as is NULL.
* iresolve.c (gfc_resolve_extends_type_of): Set the
type of the dummy argument to the one of the actual.
2010-08-21 Tobias Burnus <burnus@net-b.de>
PR fortran/36158
PR fortran/33197
* m4/bessel.m4: Implement bessel_jn and bessel_yn.
* gfortran.map: Add the generated bessel_jn_r{4,8,10,16}
and bessel_yn_r{4,8,10,16}.
* Makefile.am: Add bessel.m4.
* Makefile.in: Regenerated.
* generated/bessel_r4.c: Generated.
* generated/bessel_r16.c: Generated.
* generated/bessel_r8.c: Generated.
* generated/bessel_r10.c: Generated.
2010-08-21 Tobias Burnus <burnus@net-b.de>
PR fortran/36158
PR fortran/33197
* gfortran.dg/bessel_6.f90: New.
* gfortran.dg/bessel_7.f90: New.
From-SVN: r163440
Diffstat (limited to 'gcc/fortran/trans-intrinsic.c')
-rw-r--r-- | gcc/fortran/trans-intrinsic.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index aa0db63..373770f 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -1562,7 +1562,8 @@ gfc_get_symbol_for_expr (gfc_expr * expr) sym->as->rank = expr->rank; } - /* TODO: proper argument lists for external intrinsics. */ + gfc_copy_formal_args_intr (sym, expr->value.function.isym); + return sym; } @@ -5389,6 +5390,7 @@ gfc_conv_intrinsic_function (gfc_se * se, gfc_expr * expr) case GFC_ISYM_IERRNO: case GFC_ISYM_IRAND: case GFC_ISYM_ISATTY: + case GFC_ISYM_JN2: case GFC_ISYM_LINK: case GFC_ISYM_LSTAT: case GFC_ISYM_MALLOC: @@ -5407,6 +5409,7 @@ gfc_conv_intrinsic_function (gfc_se * se, gfc_expr * expr) case GFC_ISYM_TIME8: case GFC_ISYM_UMASK: case GFC_ISYM_UNLINK: + case GFC_ISYM_YN2: gfc_conv_intrinsic_funcall (se, expr); break; @@ -5499,6 +5502,7 @@ gfc_is_intrinsic_libcall (gfc_expr * expr) case GFC_ISYM_ALL: case GFC_ISYM_ANY: case GFC_ISYM_COUNT: + case GFC_ISYM_JN2: case GFC_ISYM_MATMUL: case GFC_ISYM_MAXLOC: case GFC_ISYM_MAXVAL: @@ -5509,6 +5513,7 @@ gfc_is_intrinsic_libcall (gfc_expr * expr) case GFC_ISYM_SHAPE: case GFC_ISYM_SPREAD: case GFC_ISYM_TRANSPOSE: + case GFC_ISYM_YN2: /* Ignore absent optional parameters. */ return 1; |