Home | History | Annotate | Line # | Download | only in gdb.opt
      1 /* Copyright (C) 2008-2024 Free Software Foundation, Inc.
      2 
      3    This program is free software; you can redistribute it and/or modify
      4    it under the terms of the GNU General Public License as published by
      5    the Free Software Foundation; either version 3 of the License, or
      6    (at your option) any later version.
      7 
      8    This program is distributed in the hope that it will be useful,
      9    but WITHOUT ANY WARRANTY; without even the implied warranty of
     10    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     11    GNU General Public License for more details.
     12 
     13    You should have received a copy of the GNU General Public License
     14    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     15 
     16 /* This is only ever run if it is compiled with a new-enough GCC, but
     17    we don't want the compilation to fail if compiled by some other
     18    compiler.  */
     19 #ifdef __GNUC__
     20 #define ATTR __attribute__((always_inline))
     21 #else
     22 #define ATTR
     23 #endif
     24 
     25 int x, y;
     26 volatile int z = 0;
     27 volatile int result;
     28 
     29 void bar(void);
     30 
     31 inline ATTR int func1(int s)
     32 {
     33   bar ();
     34   return x * y + s;
     35 }
     36 
     37 inline ATTR int func2(void)
     38 {
     39   return x * func1 (1);
     40 }
     41 
     42 int main (void)
     43 {
     44   int val;
     45 
     46   x = 7;
     47   y = 8;
     48   bar ();
     49 
     50   val = func1 (2);
     51   result = val;
     52 
     53   val = func2 ();
     54   result = val;
     55 
     56   return 0;
     57 }
     58