1 | /* This is for tst-tlsalign-extern.c, which see. It's essential for the |
2 | purpose of the test that these definitions be in a separate translation |
3 | unit from the code using the variables. */ |
4 | |
5 | __thread int tdata1 = 1; |
6 | __thread int tdata2 __attribute__ ((aligned (0x10))) = 2; |
7 | __thread int tdata3 __attribute__ ((aligned (0x1000))) = 4; |
8 | __thread int tbss1; |
9 | __thread int tbss2 __attribute__ ((aligned (0x10))); |
10 | __thread int tbss3 __attribute__ ((aligned (0x1000))); |
11 | |
12 | /* This function is never called. But its presence in this translation |
13 | unit makes GCC emit the variables above in the order defined (perhaps |
14 | because it's the order in which they're used here?) rather than |
15 | reordering them into descending order of alignment requirement--and so |
16 | keeps it more similar to the tst-tlsalign-static.c case--just in case |
17 | that affects the bug (though there is no evidence that it does). */ |
18 | |
19 | void |
20 | unused (void) |
21 | { |
22 | tdata1 = -1; |
23 | tdata2 = -2; |
24 | tdata3 = -3; |
25 | tbss1 = -4; |
26 | tbss2 = -5; |
27 | tbss3 = -6; |
28 | } |
29 | |