1 /* This test is part of GDB, the GNU debugger. 2 3 Copyright 2011-2016 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 volatile int v = 42; 19 20 __attribute__((__always_inline__)) static inline int 21 f (void) 22 { 23 /* Provide first stub line so that GDB understand the PC is already inside 24 the inlined function and does not expect a step into it. */ 25 v++; 26 v++; /* break-here */ 27 28 return v; 29 } 30 31 __attribute__((__noinline__)) static int 32 g (void) 33 { 34 volatile int l = v; 35 36 return f (); 37 } 38 39 int 40 main (void) 41 { 42 int x = g (); 43 x += f (); 44 return x; 45 } 46