1/* This testcase is part of GDB, the GNU debugger.
2
3   Copyright 2012-2023 Free Software Foundation, Inc.
4
5   This program is free software; you can redistribute it and/or modify
6   it under the terms of the GNU General Public License as published by
7   the Free Software Foundation; either version 3 of the License, or
8   (at your option) any later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14
15   You should have received a copy of the GNU General Public License
16   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
17
18extern int myfunction2 (int arg);
19
20static int
21myfunction (int arg)
22{
23  int i, j, r;
24
25  j = 0; /* myfunction location */
26  r = arg;
27
28 top:
29  ++j;  /* top location */
30
31  if (j == 10)
32    goto done;
33
34  for (i = 0; i < 10; ++i)
35    {
36      r += i;
37      if (j % 2)
38	goto top;
39    }
40
41 done:
42  return r;
43}
44
45static int
46my_unique_function_name (int arg)
47{
48  int j = 0;
49
50  /* Just do something random.  We only care about the unique function
51     name.  */
52  if (arg == 50)
53    j = 10;
54
55  return j;
56}
57
58int
59main (void)
60{
61  int i, j;
62
63  /* Call the test function repeatedly, enough times for all our tests
64     without running forever if something goes wrong.  */
65  for (i = 0, j = 0; i < 1000; ++i)
66    j += myfunction (0);
67
68  my_unique_function_name (j);
69
70  return myfunction2 (j);
71}
72