1 /* This testcase is part of GDB, the GNU debugger. 2 3 Copyright 2011-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 static volatile int v; 19 20 static void __attribute__((noinline, noclone)) 21 e (int i, double j) 22 { 23 v = 0; 24 } 25 26 static int __attribute__((noinline, noclone)) 27 data (void) 28 { 29 return 10; 30 } 31 32 static int __attribute__((noinline, noclone)) 33 data2 (void) 34 { 35 return 20; 36 } 37 38 static int __attribute__((noinline, noclone)) 39 different (int val) 40 { 41 val++; 42 e (val, val); 43 asm ("breakhere_different:"); 44 return val; 45 } 46 47 static int __attribute__((noinline, noclone)) 48 validity (int lost, int born) 49 { 50 lost = data (); 51 e (0, 0.0); 52 asm ("breakhere_validity:"); 53 return born; 54 } 55 56 static void __attribute__((noinline, noclone)) 57 invalid (int inv) 58 { 59 e (0, 0.0); 60 asm ("breakhere_invalid:"); 61 } 62 63 int 64 main () 65 { 66 different (5); 67 validity (5, data ()); 68 invalid (data2 ()); 69 return 0; 70 } 71