From 0b73eb812e8455701ef3044839f6de2ee895b15b Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Tue, 31 Jan 2012 19:38:43 +0100 Subject: [PATCH] re PR fortran/52029 ([OOP] _copy should be PURE) 2012-01-31 Tobias Burnus PR fortran/52029 * class.c (gfc_find_derived_vtab): Mark _copy function as pure. 2012-01-31 Tobias Burnus PR fortran/52029 * gfortran.dg/class_49.f90: New. From-SVN: r183770 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/class.c | 1 + gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/class_49.f90 | 11 +++++++++++ 4 files changed, 22 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/class_49.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index b39e03798f4..a0397cc3c7d 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2012-01-31 Tobias Burnus + + PR fortran/52029 + * class.c (gfc_find_derived_vtab): Mark _copy function as pure. + 2012-01-31 Tobias Burnus PR fortran/52013 diff --git a/gcc/fortran/class.c b/gcc/fortran/class.c index 3ff6a0bd1c1..0d47979cf27 100644 --- a/gcc/fortran/class.c +++ b/gcc/fortran/class.c @@ -717,6 +717,7 @@ gfc_find_derived_vtab (gfc_symbol *derived) sub_ns->proc_name = copy; copy->attr.flavor = FL_PROCEDURE; copy->attr.subroutine = 1; + copy->attr.pure = 1; copy->attr.if_source = IFSRC_DECL; /* This is elemental so that arrays are automatically treated correctly by the scalarizer. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3e0ca1e4ab8..8eb797e19a9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-01-31 Tobias Burnus + + PR fortran/52029 + * gfortran.dg/class_49.f90: New. + 2012-01-31 Tobias Burnus PR fortran/52013 diff --git a/gcc/testsuite/gfortran.dg/class_49.f90 b/gcc/testsuite/gfortran.dg/class_49.f90 new file mode 100644 index 00000000000..0c0b2b8019f --- /dev/null +++ b/gcc/testsuite/gfortran.dg/class_49.f90 @@ -0,0 +1,11 @@ +! { dg-do compile } +! +! PR fortran/52029 +! + +elemental subroutine foo() + type t + end type t + class(t), allocatable :: x + if (allocated(x)) i = 5 +end -- 2.30.2