1 /* This testcase is part of GDB, the GNU debugger. 2 3 Copyright 2004-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 */ 19 20 /* Useful abreviations. */ 21 typedef void t; 22 typedef char tc; 23 typedef short ts; 24 typedef int ti; 25 typedef long tl; 26 typedef long long tll; 27 typedef float tf; 28 typedef double td; 29 typedef long double tld; 30 typedef enum { e = '1' } te; 31 32 /* Force the type of each field. */ 33 #ifndef T 34 typedef t T; 35 #endif 36 37 T foo = '1', L; 38 39 T fun() 40 { 41 return foo; 42 } 43 44 void Fun(T foo) 45 { 46 L = foo; 47 } 48 49 void zed () 50 { 51 L = 'Z'; 52 } 53 54 int main() 55 { 56 int i; 57 58 Fun(foo); 59 60 /* An infinite loop that first clears all the variables and then 61 calls the function. This "hack" is to make re-testing easier - 62 "advance fun" is guaranteed to have always been preceded by a 63 global variable clearing zed call. */ 64 65 zed (); 66 while (1) 67 { 68 L = fun (); 69 zed (); 70 } 71 72 return 0; 73 } 74