backport: re PR fortran/56052 ([OOP] ICE in omp_add_variable, at gimplify.c:5606)
Backported from mainline 2013-01-23 Jakub Jelinek <jakub@redhat.com> PR fortran/56052 * trans-decl.c (gfc_get_symbol_decl): Set DECL_ARTIFICIAL and DECL_IGNORED_P on select_type_temporary and don't set DECL_BY_REFERENCE. * gfortran.dg/gomp/pr56052.f90: New test. From-SVN: r195662
This commit is contained in:
parent
a678dc1db1
commit
773e19b47b
|
@ -1,3 +1,13 @@
|
|||
2013-02-01 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
Backported from mainline
|
||||
2013-01-23 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR fortran/56052
|
||||
* trans-decl.c (gfc_get_symbol_decl): Set DECL_ARTIFICIAL
|
||||
and DECL_IGNORED_P on select_type_temporary and don't set
|
||||
DECL_BY_REFERENCE.
|
||||
|
||||
2013-01-24 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/56081
|
||||
|
|
|
@ -1369,6 +1369,12 @@ gfc_get_symbol_decl (gfc_symbol * sym)
|
|||
DECL_IGNORED_P (decl) = 1;
|
||||
}
|
||||
|
||||
if (sym->attr.select_type_temporary)
|
||||
{
|
||||
DECL_ARTIFICIAL (decl) = 1;
|
||||
DECL_IGNORED_P (decl) = 1;
|
||||
}
|
||||
|
||||
if (sym->attr.dimension || sym->attr.codimension)
|
||||
{
|
||||
/* Create variables to hold the non-constant bits of array info. */
|
||||
|
@ -1479,7 +1485,8 @@ gfc_get_symbol_decl (gfc_symbol * sym)
|
|||
&& POINTER_TYPE_P (TREE_TYPE (decl))
|
||||
&& !sym->attr.pointer
|
||||
&& !sym->attr.allocatable
|
||||
&& !sym->attr.proc_pointer)
|
||||
&& !sym->attr.proc_pointer
|
||||
&& !sym->attr.select_type_temporary)
|
||||
DECL_BY_REFERENCE (decl) = 1;
|
||||
|
||||
if (sym->attr.vtab
|
||||
|
|
|
@ -3,6 +3,11 @@
|
|||
Backported from mainline
|
||||
2013-01-23 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR fortran/56052
|
||||
* gfortran.dg/gomp/pr56052.f90: New test.
|
||||
|
||||
2013-01-23 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/49069
|
||||
* gcc.dg/pr49069.c: New test.
|
||||
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
! PR fortran/56052
|
||||
! { dg-do compile }
|
||||
! { dg-options "-fopenmp" }
|
||||
|
||||
subroutine middle(args)
|
||||
type args_t
|
||||
end type
|
||||
type, extends(args_t) :: scan_args_t
|
||||
end type
|
||||
class(args_t),intent(inout) :: args
|
||||
!$omp single
|
||||
select type (args)
|
||||
type is (scan_args_t)
|
||||
end select
|
||||
!$omp end single
|
||||
end subroutine middle
|
Loading…
Reference in New Issue