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