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