#include #ifndef N #define N 0 #endif #define CONCAT1(s, n) s##n #define CONCAT(s, n) CONCAT1(s, n) __thread int CONCAT (v, N) = 4; int CONCAT (tlsmod17a, N) (void) { int *p = &CONCAT (v, N); /* GCC assumes &var is never NULL, add optimization barrier. */ asm volatile ("" : "+r" (p)); if (p == NULL || *p != 4) { printf ("fail %d %p\n", N, p); return 1; } return 0; }