From 560bb0136fa74c8562d7e078eef29d3d1f7b6fc5 Mon Sep 17 00:00:00 2001 From: Janus Weil Date: Wed, 9 Nov 2011 16:56:53 +0100 Subject: [PATCH] re PR fortran/50960 ([OOP] vtables not marked as constant) 2011-11-09 Janus Weil PR fortran/50960 * gfortran.dg/typebound_call_22.f03: New test case. From-SVN: r181208 --- gcc/testsuite/ChangeLog | 5 +++ .../gfortran.dg/typebound_call_22.f03 | 32 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/typebound_call_22.f03 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a0eeb32136a..83ef1714d20 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-11-09 Janus Weil + + PR fortran/50960 + * gfortran.dg/typebound_call_22.f03: New test case. + 2011-11-09 Janne Blomqvist PR libfortran/50016 diff --git a/gcc/testsuite/gfortran.dg/typebound_call_22.f03 b/gcc/testsuite/gfortran.dg/typebound_call_22.f03 new file mode 100644 index 00000000000..b5aa8eef789 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/typebound_call_22.f03 @@ -0,0 +1,32 @@ +! { dg-do compile } +! { dg-options "-fdump-tree-optimized -O" } +! +! PR 50960: [OOP] vtables not marked as constant +! +! This test case checks whether the type-bound call to "x%bar" +! is optimized into a static call to "base". +! +! Contributed by Tobias Burnus + +module m + type t + contains + procedure, nopass :: bar => base + end type +contains + subroutine base() + write(*,*) 'base' + end subroutine +end module + +program test + use m + class(t), allocatable :: x + allocate (t :: x) + call x%bar () +end program + +! { dg-final { scan-tree-dump-times "base \\(\\);" 1 "optimized" } } +! { dg-final { cleanup-tree-dump "optimized" } } + +! { dg-final { cleanup-modules "m" } } -- 2.30.2