------- 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

Reply via email to