diff options
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/intrinsic_6.f90 | 11 |
4 files changed, 25 insertions, 5 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index b618e7d..417a60a 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2010-10-02 Janus Weil <janus@gcc.gnu.org> + + PR fortran/45748 + * resolve.c (resolve_formal_arglist): Avoid setting default type for + formal arguments of intrinsic procedures. + 2010-09-30 Janus Weil <janus@gcc.gnu.org> PR fortran/45828 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 60de8e5..5cac71e 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -297,11 +297,9 @@ resolve_formal_arglist (gfc_symbol *proc) continue; } - if (sym->ts.type == BT_UNKNOWN) - { - if (!sym->attr.function || sym->result == sym) - gfc_set_default_type (sym, 1, sym->ns); - } + if (sym->ts.type == BT_UNKNOWN && !proc->attr.intrinsic + && (!sym->attr.function || sym->result == sym)) + gfc_set_default_type (sym, 1, sym->ns); gfc_resolve_array_spec (sym->as, 0); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4d947da..721f3bb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-10-02 Janus Weil <janus@gcc.gnu.org> + + PR fortran/45748 + * gfortran.dg/intrinsic_6.f90: New. + 2010-10-02 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/42831 diff --git a/gcc/testsuite/gfortran.dg/intrinsic_6.f90 b/gcc/testsuite/gfortran.dg/intrinsic_6.f90 new file mode 100644 index 0000000..1dccb55 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/intrinsic_6.f90 @@ -0,0 +1,11 @@ +! { dg-do compile } +! { dg-options "-fimplicit-none" } +! +! PR 45748: [4.5/4.6 Regression] -fimplicit-none failures when using intrinsic MAX +! +! Contributed by Themos Tsikas <themos.tsikas@gmail.com> + +SUBROUTINE BUG(WORK) + INTRINSIC MAX + DOUBLE PRECISION WORK(MAX(2,3)) +END |