2016-02-20 Dominique d'Humieres <dominiq@lps.ens.fr>
authordominiq <dominiq@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 20 Feb 2016 14:10:55 +0000 (14:10 +0000)
committerdominiq <dominiq@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 20 Feb 2016 14:10:55 +0000 (14:10 +0000)
PR fortran/57365
gfortran.dg/allocate_with_source_18.f03: New test.

2016-02-20  Harald Anlauf  <anlauf@gmx.de>

PR fortran/52531
gfortran.dg/gomp/pr52531.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@233588 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/allocate_with_source_18.f03 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/pr52531.f90 [new file with mode: 0644]

index 9f70ed4..77a4c01 100644 (file)
@@ -1,3 +1,13 @@
+2016-02-20  Dominique d'Humieres  <dominiq@lps.ens.fr>
+
+       PR fortran/57365
+       gfortran.dg/allocate_with_source_18.f03: New test.
+
+2016-02-20  Harald Anlauf  <anlauf@gmx.de>
+
+       PR fortran/52531
+       gfortran.dg/gomp/pr52531.f90: New test.
+
 2016-02-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
 
        PR c++/69865
diff --git a/gcc/testsuite/gfortran.dg/allocate_with_source_18.f03 b/gcc/testsuite/gfortran.dg/allocate_with_source_18.f03
new file mode 100644 (file)
index 0000000..746bd0d
--- /dev/null
@@ -0,0 +1,31 @@
+! { dg-do run }
+!
+! PR fortran/57365
+! [OOP] Sourced allocation fails with unlimited polymorphism
+! Contributed by <rxs@hotmail.de>
+!
+program bug
+
+    implicit none
+    character(len=:), allocatable :: test
+
+    test = "A test case"
+    call allocate_test(test)
+    deallocate(test)
+
+contains
+
+    subroutine allocate_test(var)
+        class(*) :: var
+        class(*), pointer :: copyofvar
+        allocate(copyofvar, source=var)
+        select type (copyofvar)
+            type is (character(len=*))
+!                print*, len(copyofvar), copyofvar
+                if (len(copyofvar) /= 11) call abort ()
+                if (copyofvar /= "A test case") call abort ()
+        end select
+        deallocate(copyofvar)
+    end subroutine
+
+end program bug
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr52531.f90 b/gcc/testsuite/gfortran.dg/gomp/pr52531.f90
new file mode 100644 (file)
index 0000000..e39d359
--- /dev/null
@@ -0,0 +1,16 @@
+! { dg-do compile }
+! PR fortran/52531
+module test_mod
+  type, public :: test_type
+  end type
+contains
+  subroutine foo(bar)
+    type(test_type) :: bar
+!$omp parallel default(none) shared(bar) ! Compiles if one removes default(none)
+    call question(bar)
+!$omp end parallel
+  end subroutine
+  subroutine question(var)
+    class(test_type), intent(in) :: var ! Compiles if one replaces class by type
+  end subroutine
+end module