| static int filelocal = 2; /* In Data section */ |
| static int filelocal_bss; /* In BSS section */ |
| #ifndef __STDC__ |
| #define const /**/ |
| #endif |
| static const int filelocal_ro = 202; /* In Read-Only Data section */ |
| |
| void foo () |
| { |
| |
| void bar (); |
| |
| static int funclocal = 3; /* In Data section */ |
| static int funclocal_bss; /* In BSS section */ |
| static const int funclocal_ro = 203; /* RO Data */ |
| static const int funclocal_ro_bss; /* RO Data */ |
| |
| funclocal_bss = 103; |
| bar (); |
| } |
| |
| void bar () |
| { |
| static int funclocal = 4; /* In data section */ |
| static int funclocal_bss; /* In BSS section */ |
| funclocal_bss = 104; |
| } |
| |
| void init1 () |
| { |
| filelocal_bss = 102; |
| } |
| |
| /* On some systems, such as AIX, unreferenced variables are deleted |
| from the executable. On other compilers, such as ARM RealView, |
| const variables without their address taken are deleted. */ |
| void usestatics1 () |
| { |
| void useit1 (const int *val); |
| |
| useit1 (&filelocal); |
| useit1 (&filelocal_bss); |
| useit1 (&filelocal_ro); |
| } |
| |
| void useit1 (const int *val) |
| { |
| static int usedval; |
| |
| usedval = *val; |
| } |