aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2012-01-31 19:38:43 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2012-01-31 19:38:43 +0100
commit0b73eb812e8455701ef3044839f6de2ee895b15b (patch)
tree0408b5a684895f95331349727330564133a2d3ca /gcc
parent2419ff64b9d80647a79da9a6ae40e36e8206d4a2 (diff)
downloadgcc-0b73eb812e8455701ef3044839f6de2ee895b15b.zip
gcc-0b73eb812e8455701ef3044839f6de2ee895b15b.tar.gz
gcc-0b73eb812e8455701ef3044839f6de2ee895b15b.tar.bz2
re PR fortran/52029 ([OOP] _copy should be PURE)
2012-01-31 Tobias Burnus <burnus@net-b.de> PR fortran/52029 * class.c (gfc_find_derived_vtab): Mark _copy function as pure. 2012-01-31 Tobias Burnus <burnus@net-b.de> PR fortran/52029 * gfortran.dg/class_49.f90: New. From-SVN: r183770
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/class.c1
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/class_49.f9011
4 files changed, 22 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index b39e037..a0397cc 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,10 @@
2012-01-31 Tobias Burnus <burnus@net-b.de>
+ PR fortran/52029
+ * class.c (gfc_find_derived_vtab): Mark _copy function as pure.
+
+2012-01-31 Tobias Burnus <burnus@net-b.de>
+
PR fortran/52013
* class.c (get_unique_hashed_string): Adapt trim length.
(gfc_build_class_symbol) Encode also corank in the container name.
diff --git a/gcc/fortran/class.c b/gcc/fortran/class.c
index 3ff6a0b..0d47979 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 3e0ca1e..8eb797e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2012-01-31 Tobias Burnus <burnus@net-b.de>
+ PR fortran/52029
+ * gfortran.dg/class_49.f90: New.
+
+2012-01-31 Tobias Burnus <burnus@net-b.de>
+
PR fortran/52013
* gfortran.dg/elemental_args_check_6.f90: New.
diff --git a/gcc/testsuite/gfortran.dg/class_49.f90 b/gcc/testsuite/gfortran.dg/class_49.f90
new file mode 100644
index 0000000..0c0b2b8
--- /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