This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/26107] ICE after error message on invalid code
- From: "paul dot richard dot thomas at cea dot fr" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 1 Mar 2006 12:36:08 -0000
- Subject: [Bug fortran/26107] ICE after error message on invalid code
- References: <bug-26107-6528@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #2 from paul dot richard dot thomas at cea dot fr 2006-03-01 12:36 -------
This fixes it:
Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c (révision 111471)
+++ gcc/fortran/resolve.c (copie de travail)
@@ -1357,7 +1357,7 @@
need_full_assumed_size = temp;
- if (!pure_function (expr, &name))
+ if (!pure_function (expr, &name) && name)
{
if (forall_flag)
and this tests it:
! { dg-do compile }
! Tests fix for PR26107 in which an ICE would occur after the second
! error message below. This resulted from a spurious attempt to
! produce the third error message, without the name of the function.
!
! This is an expanded version of the testcase in the PR.
!
pure function equals(self, & ! { dg-error "must be INTENT(IN)" }
string, ignore_case) result(same)
character(*), intent(in) :: string
integer(4), intent(in) :: ignore_case
integer(4) :: same
if (len (self) < 1) return ! { dg-error "Type of argument" }
same = 1
end function
function impure(self) result(ival)
character(*), intent(in) :: self
ival = 1
end function
pure function purity(self, string, ignore_case) result(same)
character(*), intent(in) :: self
character(*), intent(in) :: string
integer(4), intent(in) :: ignore_case
integer i
if (end > impure (self)) & ! { dg-error "non-PURE procedure" }
return
end function
Will post to the list tonight.
Paul
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26107