update copyright year range in GDB files
[external/binutils.git] / gdb / testsuite / gdb.compile / compile.c
1 /* This testcase is part of GDB, the GNU debugger.
2
3    Copyright 2014-2017 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 #define SOME_MACRO 23
19 #define ARG_MACRO(X, Y) ((X) + (Y) - 1)
20
21
22 enum enum_type {
23   ONE = 1,
24   TWO = 2
25 };
26
27 typedef int v4 __attribute__ ((vector_size (16)));
28
29 union union_type;
30
31 struct struct_type {
32   char charfield;
33   unsigned char ucharfield;
34   short shortfield;
35   unsigned short ushortfield;
36   int intfield;
37   unsigned int uintfield;
38   unsigned int bitfield : 3;
39   long longfield;
40   unsigned long ulongfield;
41   enum enum_type enumfield;
42   float floatfield;
43   double doublefield;
44   const union union_type *ptrfield;
45   volatile struct struct_type *selffield;
46   int arrayfield[5];
47   _Complex double complexfield;
48   _Bool boolfield;
49   v4 vectorfield;
50 };
51
52 typedef int inttypedef;
53
54 union union_type {
55   int intfield;
56   inttypedef typedeffield;
57 };
58
59 /* volatile provides some coverage of the conversion code.  */
60 volatile struct struct_type struct_object;
61
62 union union_type union_object;
63
64
65 enum ulonger_enum_type {
66   REALLY_MINUS_1 = -1UL,
67 };
68
69 enum ulonger_enum_type ulonger;
70
71 enum longer_enum_type {
72   MINUS_1 = -1,
73   FORCE_TO_LONG = 1L << ((8 * sizeof (long)) - 2)
74 };
75
76 enum longer_enum_type longer;
77
78 int globalvar = 10;
79
80 static void
81 func_static (int addend)
82 {
83   globalvar += addend;
84 }
85
86 void
87 func_global (int subtrahend)
88 {
89   globalvar -= subtrahend;
90 }
91
92 void
93 no_args_or_locals (void)
94 {
95   /* no_args_or_locals breakpoint */
96 }
97
98 int *intptr;
99 int globalshadow = 10;
100 static int staticshadow = 20;
101 int externed = 7;
102
103 int
104 main (void)
105 {
106   int localvar = 50;
107   int shadowed = 51;
108   int bound = 3;
109   int unresolved = 10;
110   int globalshadow = 100;
111   int staticshadow = 200;
112   int externed = 9;
113   int f = 0;
114
115   static int static_local = 77000;
116
117   {
118     int another_local = 7;
119     int shadowed = 52;
120     extern int unresolved;
121     extern int externed;
122
123     int vla[bound];
124
125     func_static (0); /* break-here */
126     no_args_or_locals ();
127   }
128
129  return 0;
130 }