diff options
author | Daniel Franke <franke.daniel@gmail.com> | 2010-05-07 11:36:45 -0400 |
---|---|---|
committer | Daniel Franke <dfranke@gcc.gnu.org> | 2010-05-07 11:36:45 -0400 |
commit | db7d7dc1730d47f5813940d97ca60cd6ffa4e2eb (patch) | |
tree | 2c105858d2fbab3d0a32475b4724e1ab345ebbf8 /gcc | |
parent | 2cd5965fa3cd3586a642e75c76a256f36f8a99d0 (diff) | |
download | gcc-db7d7dc1730d47f5813940d97ca60cd6ffa4e2eb.zip gcc-db7d7dc1730d47f5813940d97ca60cd6ffa4e2eb.tar.gz gcc-db7d7dc1730d47f5813940d97ca60cd6ffa4e2eb.tar.bz2 |
re PR fortran/40728 (Bogus error "Error: Can't convert UNKNOWN to REAL(8) at (1)")
gcc/fortran/:
2010-05-07 Daniel Franke <franke.daniel@gmail.com>
PR fortran/40728
* intrinc.c (gfc_is_intrinsic): Do not prematurely mark symbol
as external
gcc/testsuite/:
2010-05-07 Daniel Franke <franke.daniel@gmail.com>
PR fortran/40728
* gfortran.dg/coarray_1.f90: Fixed error message.
* gfortran.dg/selected_char_kind_3.f90: Fixed error message.
* gfortran.dg/intrinsic_std_1.f90: Fixed bogus message.
* gfortran.dg/intrinsic_std_5.f90: New.
From-SVN: r159155
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/intrinsic.c | 19 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/coarray_1.f90 | 2 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/intrinsic_std_1.f90 | 2 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/intrinsic_std_5.f03 | 24 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/selected_char_kind_3.f90 | 2 |
7 files changed, 50 insertions, 14 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 4c42faa..97e002a 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2010-05-07 Daniel Franke <franke.daniel@gmail.com> + + PR fortran/40728 + * intrinc.c (gfc_is_intrinsic): Do not prematurely mark symbol + as external + 2010-05-07 Jason Merrill <jason@redhat.com> * trans-expr.c (gfc_conv_procedure_call): Rename nullptr to null_ptr @@ -17,6 +23,7 @@ 2010-05-05 Daniel Franke <franke.daniel@gmail.com> + PR fortran/32331 * resolve.c (traverse_data_list): Rephrase error message for non-constant bounds in data-implied-do. diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c index 34afabc..e8041eb 100644 --- a/gcc/fortran/intrinsic.c +++ b/gcc/fortran/intrinsic.c @@ -956,17 +956,14 @@ gfc_is_intrinsic (gfc_symbol* sym, int subroutine_flag, locus loc) /* See if this intrinsic is allowed in the current standard. */ if (gfc_check_intrinsic_standard (isym, &symstd, false, loc) == FAILURE) { - if (sym->attr.proc == PROC_UNKNOWN) - { - if (gfc_option.warn_intrinsics_std) - gfc_warning_now ("The intrinsic '%s' at %L is not included in the" - " selected standard but %s and '%s' will be" - " treated as if declared EXTERNAL. Use an" - " appropriate -std=* option or define" - " -fall-intrinsics to allow this intrinsic.", - sym->name, &loc, symstd, sym->name); - gfc_add_external (&sym->attr, &loc); - } + if (sym->attr.proc == PROC_UNKNOWN + && gfc_option.warn_intrinsics_std) + gfc_warning_now ("The intrinsic '%s' at %L is not included in the" + " selected standard but %s and '%s' will be" + " treated as if declared EXTERNAL. Use an" + " appropriate -std=* option or define" + " -fall-intrinsics to allow this intrinsic.", + sym->name, &loc, symstd, sym->name); return false; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2ddbe95..297ae76 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2010-05-07 Daniel Franke <franke.daniel@gmail.com> + + PR fortran/40728 + * gfortran.dg/coarray_1.f90: Fixed error message. + * gfortran.dg/selected_char_kind_3.f90: Fixed error message. + * gfortran.dg/intrinsic_std_1.f90: Fixed bogus message. + * gfortran.dg/intrinsic_std_5.f90: New. + 2010-05-07 Jason Merrill <jason@redhat.com> * g++.dg/cpp0x/nullptr20.C: Use sprintf. diff --git a/gcc/testsuite/gfortran.dg/coarray_1.f90 b/gcc/testsuite/gfortran.dg/coarray_1.f90 index ba10d64..7fd4c84 100644 --- a/gcc/testsuite/gfortran.dg/coarray_1.f90 +++ b/gcc/testsuite/gfortran.dg/coarray_1.f90 @@ -13,6 +13,6 @@ sync memory ! { dg-error "Fortran 2008:" } sync images(*) ! { dg-error "Fortran 2008:" } ! num_images is implicitly defined: -n = num_images() ! { dg-error "convert UNKNOWN to INTEGER" } +n = num_images() ! { dg-error "has no IMPLICIT type" } error stop 'stop' ! { dg-error "Fortran 2008:" } end diff --git a/gcc/testsuite/gfortran.dg/intrinsic_std_1.f90 b/gcc/testsuite/gfortran.dg/intrinsic_std_1.f90 index 9c97b7e..290b54c 100644 --- a/gcc/testsuite/gfortran.dg/intrinsic_std_1.f90 +++ b/gcc/testsuite/gfortran.dg/intrinsic_std_1.f90 @@ -20,7 +20,7 @@ SUBROUTINE no_implicit ! ASINH is an intrinsic of F2008 ! The warning should be issued in the declaration above where it is declared ! EXTERNAL. - WRITE (*,*) ASINH (1.) ! { dg-bogus "Fortran 2008" } + WRITE (*,*) ASINH (1.) ! { dg-warning "Fortran 2008" } END SUBROUTINE no_implicit SUBROUTINE implicit_type diff --git a/gcc/testsuite/gfortran.dg/intrinsic_std_5.f03 b/gcc/testsuite/gfortran.dg/intrinsic_std_5.f03 new file mode 100644 index 0000000..f5c0f2d --- /dev/null +++ b/gcc/testsuite/gfortran.dg/intrinsic_std_5.f03 @@ -0,0 +1,24 @@ +! { dg-do compile } +! { dg-options "-std=f2003" } +! +! PR fortran/40728 +! + +! bogus error +SUBROUTINE s1 + IMPLICIT NONE + real(4), volatile :: r4 + + r4 = 0.0_4 + r4 = asinh(r4) ! { dg-error "has no IMPLICIT type" } +END SUBROUTINE + + + +! ICE on invalid (ATANH is defined by F2008 only) +SUBROUTINE s2 + IMPLICIT NONE + real :: r + r = 0.4 + print *, atanh(r) ! { dg-error "has no IMPLICIT type" } +END SUBROUTINE diff --git a/gcc/testsuite/gfortran.dg/selected_char_kind_3.f90 b/gcc/testsuite/gfortran.dg/selected_char_kind_3.f90 index 59bc18f..fad5e46 100644 --- a/gcc/testsuite/gfortran.dg/selected_char_kind_3.f90 +++ b/gcc/testsuite/gfortran.dg/selected_char_kind_3.f90 @@ -4,7 +4,7 @@ ! Check that SELECTED_CHAR_KIND is rejected with -std=f95 ! implicit none - character(kind=selected_char_kind("ascii")) :: s ! { dg-error "must be an intrinsic function" } + character(kind=selected_char_kind("ascii")) :: s ! { dg-error "has no IMPLICIT type" } s = "" ! { dg-error "has no IMPLICIT type" } print *, s end |