diff options
author | Arnaud Charlet <charlet@adacore.com> | 2008-08-04 10:28:30 +0000 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2008-08-04 12:28:30 +0200 |
commit | 382dbcb228d2dcd9c663a46f063266f1698a7061 (patch) | |
tree | 964f349a4787a544dc35214495e4b9154476063a /gcc | |
parent | b282ab3735d04d15fcd035c7b58f075c0a35e534 (diff) | |
download | gcc-382dbcb228d2dcd9c663a46f063266f1698a7061.zip gcc-382dbcb228d2dcd9c663a46f063266f1698a7061.tar.gz gcc-382dbcb228d2dcd9c663a46f063266f1698a7061.tar.bz2 |
* gnat.dg/bip_aggregate_bug.adb: New test.
From-SVN: r138606
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/bip_aggregate_bug.adb | 49 |
2 files changed, 58 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6819be9..9c40d95 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2008-08-04 Arnaud Charlet <charlet@adacore.com> + + * gnat.dg/bip_aggregate_bug.adb: New test. + 2008-08-03 Jerry DeLisle <jvdelisle@gcc.gnu.org> * gfortran.dg/fmt_t_7.f: Replace CR-LF with LF. @@ -31,6 +35,11 @@ * gnat.dg/boolean_expr2.adb: New test. +2008-08-01 Arnaud Charlet <charlet@adacore.com> + + * gnat.dg/conv4.adb: New test. + * gnat.dg/overloading.adb: New test. + 2008-08-01 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/36991 diff --git a/gcc/testsuite/gnat.dg/bip_aggregate_bug.adb b/gcc/testsuite/gnat.dg/bip_aggregate_bug.adb new file mode 100644 index 0000000..ce8daeb --- /dev/null +++ b/gcc/testsuite/gnat.dg/bip_aggregate_bug.adb @@ -0,0 +1,49 @@ +-- { dg-do run } + +procedure BIP_Aggregate_Bug is + + package Limited_Types is + + type Lim_Tagged is tagged limited record + Root_Comp : Integer; + end record; + + type Lim_Ext is new Lim_Tagged with record + Ext_Comp : Integer; + end record; + + function Func_Lim_Tagged (Choice : Integer) return Lim_Tagged'Class; + + end Limited_Types; + + package body Limited_Types is + + function Func_Lim_Tagged (Choice : Integer) return Lim_Tagged'Class is + begin + case Choice is + when 111 => + return Lim_Ext'(Root_Comp => Choice, Ext_Comp => Choice); + when 222 => + return Result : Lim_Tagged'Class + := Lim_Ext'(Root_Comp => Choice, Ext_Comp => Choice); + when others => + return Lim_Tagged'(Root_Comp => Choice); + end case; + end Func_Lim_Tagged; + + end Limited_Types; + + use Limited_Types; + + LT_Root : Lim_Tagged'Class := Func_Lim_Tagged (Choice => 999); + LT_Ext1 : Lim_Tagged'Class := Func_Lim_Tagged (Choice => 111); + LT_Ext2 : Lim_Tagged'Class := Func_Lim_Tagged (Choice => 222); + +begin + if LT_Root.Root_Comp /= 999 + or else Lim_Ext (LT_Ext1).Ext_Comp /= 111 + or else Lim_Ext (LT_Ext2).Ext_Comp /= 222 + then + raise Program_Error; + end if; +end BIP_Aggregate_Bug; |