This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/32129] New: ICE: Procedure call with array-section-actual to scalar dummy
- From: "burnus at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 28 May 2007 17:07:08 -0000
- Subject: [Bug fortran/32129] New: ICE: Procedure call with array-section-actual to scalar dummy
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
This is kind of a split up of PR31564, which is unrelated.
The program is invalid as we pass an array as actual argument to the scalar
dummy argument; somehow gfortran does not detect this.
Interestingly, compare_actual_formal is never called if the actual argument is
an array section with non-expr-constant bounds. If it is a single element, or
the whole array or has e.g. bounds "1:1" or "1:2" everything is caught and goes
through compare_actual_formal, except for ":which", "1:which" etc.
The ICE is:
x.f90: In function 'cdf_beta':
x.f90:16: internal compiler error: in gfc_trans_call, at
fortran/trans-stmt.c:321
Testcase, from PR 31564 modified to produce invalid code.
MODULE cdf_aux_mod
TYPE :: the_distribution
INTEGER :: parameters(1)
END TYPE the_distribution
TYPE (the_distribution), PARAMETER :: the_beta = the_distribution((/0/))
CONTAINS
SUBROUTINE set_bound(arg_name)
INTEGER, INTENT (IN) :: arg_name
END SUBROUTINE set_bound
END MODULE cdf_aux_mod
MODULE cdf_beta_mod
CONTAINS
SUBROUTINE cdf_beta()
USE cdf_aux_mod
INTEGER :: which
which = 1
CALL set_bound(the_beta%parameters(1:which))
END SUBROUTINE cdf_beta
END MODULE cdf_beta_mod
--
Summary: ICE: Procedure call with array-section-actual to scalar
dummy
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Keywords: ice-on-invalid-code
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: burnus at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32129