diff options
Diffstat (limited to 'gcc-4.4.3/gcc/testsuite/gnat.dg/self_aggregate_with_call.adb')
-rw-r--r-- | gcc-4.4.3/gcc/testsuite/gnat.dg/self_aggregate_with_call.adb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc-4.4.3/gcc/testsuite/gnat.dg/self_aggregate_with_call.adb b/gcc-4.4.3/gcc/testsuite/gnat.dg/self_aggregate_with_call.adb new file mode 100644 index 000000000..4979bd4fc --- /dev/null +++ b/gcc-4.4.3/gcc/testsuite/gnat.dg/self_aggregate_with_call.adb @@ -0,0 +1,30 @@ +-- { dg-do run } +-- { dg-options "-O2" } + +procedure self_aggregate_with_call is + + type Values is array (1 .. 8) of Natural; + + type Vector is record + Components : Values; + end record; + + function Clone (Components: Values) return Values is + begin + return Components; + end; + + procedure Process (V : in out Vector) is + begin + V.Components (Values'First) := 1; + V := (Components => Clone (V.Components)); + + if V.Components (Values'First) /= 1 then + raise Program_Error; + end if; + end; + + V : Vector; +begin + Process (V); +end; |