1 /* { dg-do compile } */ 2 /* { dg-options "-O2" } 3 /* { dg-add-options tls } */ 4 5 #include <stdint.h> 6 7 __thread int8_t var1 __attribute__((tls_model("local-dynamic"))); 8 __thread int8_t var2 __attribute__((tls_model("local-dynamic"))); 9 sum(void)10int8_t sum (void) 11 { 12 return var1 + var2; 13 } 14 ext16_sum(void)15int16_t ext16_sum (void) 16 { 17 return (int16_t)var1 + (int16_t)var2; 18 } 19 ext32_sum(void)20int32_t ext32_sum (void) 21 { 22 return (int32_t)var1 + (int32_t)var2; 23 } 24 ext_sum(void)25long ext_sum (void) 26 { 27 return (long)var1 + (long)var2; 28 } 29 set(int8_t i)30void set (int8_t i) 31 { 32 var1 = i; 33 var2 = i; 34 } 35 36 /* { dg-final { scan-assembler-times "__tls_get_addr" 5 } } */ 37 /* { dg-final { scan-assembler-times "ldub\t\[^\n\]*tldo_add" 2 } } */ 38 /* { dg-final { scan-assembler-times "ldsb\t\[^\n\]*tldo_add" 6 } } */ 39 /* { dg-final { scan-assembler-times "stb\t\[^\n\]*tldo_add" 2 } } */ 40