diff options
Diffstat (limited to 'gcc/testsuite/gnat.dg/unc_memfree.adb')
-rw-r--r-- | gcc/testsuite/gnat.dg/unc_memfree.adb | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/gcc/testsuite/gnat.dg/unc_memfree.adb b/gcc/testsuite/gnat.dg/unc_memfree.adb new file mode 100644 index 000000000..d6a07f07f --- /dev/null +++ b/gcc/testsuite/gnat.dg/unc_memfree.adb @@ -0,0 +1,34 @@ +-- { dg-do run } + +with Ada.Unchecked_Deallocation; +with Unc_Memops; + +procedure Unc_Memfree is + + type List is array (Natural range <>) of Integer; + for List'Alignment use Standard'Maximum_Alignment; + + type Fat_List_Access is access all List; + + type Thin_List_Access is access all List; + for Thin_List_Access'Size use Standard'Address_Size; + + procedure Release_Fat is new Ada.Unchecked_Deallocation + (Object => List, Name => Fat_List_Access); + + procedure Release_Thin is new Ada.Unchecked_Deallocation + (Object => List, Name => Thin_List_Access); + + My_Fat_List : Fat_List_Access; + My_Thin_List : Thin_List_Access; +begin + Unc_Memops.Expect_Symetry (True); + + My_Fat_List := new List (1 .. 3); + Release_Fat (My_Fat_List); + + My_Thin_List := new List (1 .. 3); + Release_Thin (My_Thin_List); + + Unc_Memops.Expect_Symetry (False); +end; |