aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDaniel Franke <franke.daniel@gmail.com>2010-05-07 11:36:45 -0400
committerDaniel Franke <dfranke@gcc.gnu.org>2010-05-07 11:36:45 -0400
commitdb7d7dc1730d47f5813940d97ca60cd6ffa4e2eb (patch)
tree2c105858d2fbab3d0a32475b4724e1ab345ebbf8 /gcc
parent2cd5965fa3cd3586a642e75c76a256f36f8a99d0 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/fortran/intrinsic.c19
-rw-r--r--gcc/testsuite/ChangeLog8
-rw-r--r--gcc/testsuite/gfortran.dg/coarray_1.f902
-rw-r--r--gcc/testsuite/gfortran.dg/intrinsic_std_1.f902
-rw-r--r--gcc/testsuite/gfortran.dg/intrinsic_std_5.f0324
-rw-r--r--gcc/testsuite/gfortran.dg/selected_char_kind_3.f902
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