1/* This testcase is part of GDB, the GNU debugger.
2
3   Copyright 2010-2020 Free Software Foundation, Inc.
4
5   Contributed by Pierre Muller.
6
7   This program is free software; you can redistribute it and/or modify
8   it under the terms of the GNU General Public License as published by
9   the Free Software Foundation; either version 3 of the License, or
10   (at your option) any later version.
11
12   This program is distributed in the hope that it will be useful,
13   but WITHOUT ANY WARRANTY; without even the implied warranty of
14   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   GNU General Public License for more details.
16
17   You should have received a copy of the GNU General Public License
18   along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
20   Qualifiers of forward types are not resolved correctly with stabs.  */
21
22struct dummy;
23
24enum dummy_enum;
25
26/* This function prevents the compiler from dropping local variables
27   we need for the test.  */
28void *hack (const struct dummy *t, const enum dummy_enum *e);
29
30const void *
31test (const struct dummy *t)
32{
33  const struct dummy *tt;
34  enum dummy_enum *e;
35  tt = t;
36  return hack (t, e);
37}
38
39void *
40test2 (struct dummy *t)
41{
42  struct dummy *tt;
43  const enum dummy_enum *e;
44  tt = t;
45  return hack (t, e);
46}
47
48
49struct dummy {
50 int x;
51 int y;
52 double b;
53} tag_dummy;
54
55enum dummy_enum {
56  enum1,
57  enum2
58} tag_dummy_enum;
59
60void *
61hack (const struct dummy *t, const enum dummy_enum *e)
62{
63  return (void *) t;
64}
65
66int
67main ()
68{
69  struct dummy tt;
70  tt.x = 5;
71  tt.y = 25;
72  tt.b = 2.5;
73  test2 (&tt);
74  test (&tt);
75  return 0;
76}
77