1 int unused_var = 7;
2 int used_var = 7;
3 
4 int
unused_func(int v)5 unused_func (int v)
6 {
7   return 3 * unused_var;
8 }
9 
10 int
11 __attribute__((noinline))
used_func(int v)12 used_func (int v)
13 {
14   return 2 * used_var;
15 }
16 
17 int
main(void)18 main (void)
19 {
20   return used_func (5);
21 }
22 
23 void
dummy_func(void)24 dummy_func (void)
25 {
26   /* These are here in case the target prepends an underscore to
27      the start of function names.  They are inside a dummy function
28      so that they will appear at the end of gcc's assembler output,
29      after the definitions of main() and used_func(), rather than
30      at the beginning of the file.  */
31 
32   __asm__(".ifndef main\n\
33 .global main\n\
34 .set main, _main\n\
35 .endif");
36 
37   __asm__(".ifndef used_func\n\
38 .global used_func\n\
39 .set used_func, _used_func\n\
40 .endif");
41 }
42