Ulrich Weigand | 7db6918 | 2015-02-18 09:13:27 +0000 | [diff] [blame] | 1 | ; Test local-dynamic TLS access optimizations. |
| 2 | ; |
| 3 | ; If we access two different local-dynamic TLS variables, we only |
| 4 | ; need a single call to __tls_get_offset. |
| 5 | ; |
| 6 | ; RUN: llc < %s -mcpu=z10 -mtriple=s390x-linux-gnu -relocation-model=pic | grep "__tls_get_offset" | count 1 |
| 7 | |
| 8 | @x = thread_local(localdynamic) global i32 0 |
| 9 | @y = thread_local(localdynamic) global i32 0 |
| 10 | |
| 11 | define i32 @foo() { |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 12 | %valx = load i32, i32* @x |
| 13 | %valy = load i32, i32* @y |
Ulrich Weigand | 7db6918 | 2015-02-18 09:13:27 +0000 | [diff] [blame] | 14 | %add = add nsw i32 %valx, %valy |
| 15 | ret i32 %add |
| 16 | } |