daily update
[external/binutils.git] / gdb / testsuite / gdb.ada / packed_tagged / comp_bug.adb
1 --  Copyright 2008, 2009 Free Software Foundation, Inc.\r
2 --\r
3 --  This program is free software; you can redistribute it and/or modify\r
4 --  it under the terms of the GNU General Public License as published by\r
5 --  the Free Software Foundation; either version 3 of the License, or\r
6 --  (at your option) any later version.\r
7 --\r
8 --  This program is distributed in the hope that it will be useful,\r
9 --  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
10 --  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
11 --  GNU General Public License for more details.\r
12 --\r
13 --  You should have received a copy of the GNU General Public License\r
14 --  along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
15 \r
16 procedure Comp_Bug is\r
17 \r
18    type Number_T (Exists : Boolean := False) is\r
19       record\r
20          case Exists is\r
21             when True =>\r
22                Value : Natural range 0 .. 255;\r
23             when False =>\r
24                null;\r
25          end case;\r
26       end record;\r
27    pragma Pack (Number_T);\r
28 \r
29    X : Number_T;\r
30    --  brobecker/2007-09-06: At the time when this issue (G904-017) was\r
31    --  reported, the problem only reproduced if the variable was declared\r
32    --  inside a function (in other words, stored on stack).  Although\r
33    --  the issue probably still existed when I tried moving this variable\r
34    --  to a package spec, the symptoms inside GDB disappeared.\r
35 begin\r
36    X := (Exists => True, Value => 10);\r
37    if X.Exists then -- STOP\r
38       X.Value := X.Value + 1;\r
39    end if;\r
40 end Comp_Bug;\r