backport: re PR fortran/70601 ([OOP] ICE on procedure pointer component call)
2017-06-09 Janus Weil <janus@gcc.gnu.org> Backport from trunk PR fortran/70601 * trans-expr.c (gfc_conv_procedure_call): Fix detection of allocatable function results. 2017-06-09 Janus Weil <janus@gcc.gnu.org> Backport from trunk PR fortran/70601 * gfortran.dg/proc_ptr_comp_50.f90: New test. From-SVN: r249066
This commit is contained in:
parent
e40747b16b
commit
d4e39c8869
|
@ -1,3 +1,10 @@
|
|||
2017-06-09 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
Backport from trunk
|
||||
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>
|
||||
|
||||
Backport from trunk
|
||||
|
|
|
@ -6132,7 +6132,7 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
|
|||
after use. This necessitates the creation of a temporary to
|
||||
hold the result to prevent duplicate calls. */
|
||||
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);
|
||||
gfc_add_modify (&se->pre, tmp, se->expr);
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2017-06-09 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
Backport from trunk
|
||||
PR fortran/70601
|
||||
* gfortran.dg/proc_ptr_comp_50.f90: New test.
|
||||
|
||||
2017-06-08 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/81015
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
! { 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
|
Loading…
Reference in New Issue