Commit 92bba237 by Janus Weil

re PR fortran/70601 ([OOP] ICE on procedure pointer component call)

2017-06-05  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/70601
	* trans-expr.c (gfc_conv_procedure_call): Fix detection of allocatable
	function results.


2017-06-05  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/70601
	* gfortran.dg/proc_ptr_comp_50.f90: New test.

From-SVN: r248878
parent 7b3ee9c9
2017-06-05 Janus Weil <janus@gcc.gnu.org>
PR fortran/70601
* trans-expr.c (gfc_conv_procedure_call): Fix detection of allocatable
function results.
2017-06-05 Nicolas Koenig <koenigni@student.ethz.ch> 2017-06-05 Nicolas Koenig <koenigni@student.ethz.ch>
PR fortran/35339 PR fortran/35339
......
...@@ -6132,7 +6132,7 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym, ...@@ -6132,7 +6132,7 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
after use. This necessitates the creation of a temporary to after use. This necessitates the creation of a temporary to
hold the result to prevent duplicate calls. */ hold the result to prevent duplicate calls. */
if (!byref && sym->ts.type != BT_CHARACTER if (!byref && sym->ts.type != BT_CHARACTER
&& sym->attr.allocatable && !sym->attr.dimension) && sym->attr.allocatable && !sym->attr.dimension && !comp)
{ {
tmp = gfc_create_var (TREE_TYPE (se->expr), NULL); tmp = gfc_create_var (TREE_TYPE (se->expr), NULL);
gfc_add_modify (&se->pre, tmp, se->expr); gfc_add_modify (&se->pre, tmp, se->expr);
......
2017-06-05 Janus Weil <janus@gcc.gnu.org>
PR fortran/70601
* gfortran.dg/proc_ptr_comp_50.f90: New test.
2017-06-05 Nicolas Koenig <koenigni@student.ethz.ch> 2017-06-05 Nicolas Koenig <koenigni@student.ethz.ch>
PR fortran/35339 PR fortran/35339
......
! { dg-do compile }
!
! PR 70601: [5/6/7 Regression] [OOP] ICE on procedure pointer component call
!
! Contributed by zmi <zmi007@gmail.com>
program test
implicit none
type :: concrete_type
procedure (run_concrete_type), pointer :: run
end type
type(concrete_type), allocatable :: concrete
allocate(concrete)
concrete % run => run_concrete_type
call concrete % run()
contains
subroutine run_concrete_type(this)
class(concrete_type) :: this
end subroutine
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment