Bug 54189 - ICE (segfault) with invalid assumed-size dummy
Summary: ICE (segfault) with invalid assumed-size dummy
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: fortran (show other bugs)
Version: 4.8.0
: P3 normal
Target Milestone: ---
Assignee: janus
URL:
Keywords: ice-on-invalid-code
Depends on:
Blocks:
 
Reported: 2012-08-06 13:38 UTC by Tobias Burnus
Modified: 2020-02-18 19:08 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2013-05-29 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tobias Burnus 2012-08-06 13:38:15 UTC
Cf. http://gcc.gnu.org/ml/fortran/2012-08/msg00034.html

The following program ICEs in check_assumed_size_reference's
1386      if ((e->ref->u.ar.end[e->ref->u.ar.as->rank - 1] == NULL)
as e->ref == NULL.


implicit none
contains
function g()
  integer :: g(*)
end function g


subroutine test()
  procedure(g), pointer :: x
  x => g
end subroutine test
end
Comment 1 janus 2013-05-29 21:06:52 UTC
Trivial patch:

Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c	(revision 199388)
+++ gcc/fortran/resolve.c	(working copy)
@@ -1459,7 +1459,7 @@ check_assumed_size_reference (gfc_symbol *sym, gfc
 
   /* FIXME: The comparison "e->ref->u.ar.type == AR_FULL" is wrong.
      What should it be?  */
-  if ((e->ref->u.ar.end[e->ref->u.ar.as->rank - 1] == NULL)
+  if (e->ref && (e->ref->u.ar.end[e->ref->u.ar.as->rank - 1] == NULL)
 	  && (e->ref->u.ar.as->type == AS_ASSUMED_SIZE)
 	       && (e->ref->u.ar.type == AR_FULL))
     {
Comment 2 janus 2013-05-30 09:00:28 UTC
(In reply to janus from comment #1)
> Trivial patch:

Regtests cleanly. Will commit as obvious.
Comment 3 janus 2013-05-30 10:22:52 UTC
Fixed with r199445. Closing.




Author: janus
Date: Thu May 30 10:19:16 2013
New Revision: 199445

URL: http://gcc.gnu.org/viewcvs?rev=199445&root=gcc&view=rev
Log:
2013-05-30  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/54189
	* resolve.c (check_assumed_size_reference): Check for e->ref.


2013-05-30  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/54189
	* gfortran.dg/assumed_size_1.f90: New.

Added:
    trunk/gcc/testsuite/gfortran.dg/assumed_size_1.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/resolve.c
    trunk/gcc/testsuite/ChangeLog