1 /* This testcase is part of GDB, the GNU debugger. 2 3 Copyright 2012-2020 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 18 class foo 19 { 20 public: bar(void)21 static int bar (void) 22 { 23 int i = 5; 24 bool first = true; 25 26 to_the_top: /* bar:to_the_top */ 27 while (1) 28 { 29 if (i == 1) 30 { 31 if (first) 32 { 33 first = false; 34 goto to_the_top; 35 } 36 else 37 goto get_out_of_here; 38 } 39 40 --i; 41 } 42 43 get_out_of_here: /* bar:get_out_of_here */ 44 return i; 45 } 46 baz(int a)47 int baz (int a) 48 { 49 int i = a; 50 bool first = true; 51 52 to_the_top: /* baz:to_the_top */ 53 while (1) 54 { 55 if (i == 1) 56 { 57 if (first) 58 { 59 first = false; 60 goto to_the_top; 61 } 62 else 63 goto get_out_of_here; 64 } 65 66 --i; 67 } 68 69 get_out_of_here: /* baz:get_out_of_here */ 70 return i; 71 } 72 }; 73 74 int main(void)75main (void) 76 { 77 foo f; 78 return f.baz (foo::bar () + 3); 79 } 80 81