summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/storage_size_1.f08
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/storage_size_1.f08')
-rw-r--r--gcc/testsuite/gfortran.dg/storage_size_1.f0831
1 files changed, 31 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/storage_size_1.f08 b/gcc/testsuite/gfortran.dg/storage_size_1.f08
new file mode 100644
index 000000000..ade9dfc30
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/storage_size_1.f08
@@ -0,0 +1,31 @@
+! { dg-do run }
+!
+! PR 44649: [OOP] F2008: storage_size intrinsic
+!
+! Contributed by Janus Weil <janus@gcc.gnu.org>
+
+type :: t
+ integer(4) :: i
+ real(4) :: r
+end type
+
+type,extends(t) :: t2
+ integer(4) :: j
+end type
+
+type(t) :: a
+type(t), dimension(1:3) :: b
+class(t), allocatable :: cp
+
+allocate(t2::cp)
+
+if (sizeof(a) /= 8) call abort()
+if (storage_size(a) /= 64) call abort()
+
+if (sizeof(b) /= 24) call abort()
+if (storage_size(b) /= 64) call abort()
+
+if (sizeof(cp) /= 8) call abort()
+if (storage_size(cp) /= 96) call abort()
+
+end