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 18class myclass 19{ 20public: 21 static int myfunction (int arg) /* entry location */ 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 45 int operator, (const myclass& c) { return 0; } /* operator location */ 46}; 47 48int 49main (void) 50{ 51 int i, j; 52 53 /* Call the test function repeatedly, enough times for all our tests 54 without running forever if something goes wrong. */ 55 myclass c, d; 56 for (i = 0, j = 0; i < 1000; ++i) 57 { 58 j += myclass::myfunction (0); 59 j += (c,d); 60 } 61 62 return j; 63} 64