39 lines · plain
1; RUN: llc -O0 -mtriple=x86_64-apple-darwin12 -filetype=obj -o - %s | llvm-readobj -S - | FileCheck %s2; Test that we emit weak_odr thread_locals correctly into the thread_bss section3; PR159724 5; CHECK: Section {6; CHECK: Index: 17; CHECK: Name: __thread_bss (5F 5F 74 68 72 65 61 64 5F 62 73 73 00 00 00 00)8; CHECK: Size: 0x89; CHECK: Alignment: 310; CHECK: }11; CHECK: Section {12; CHECK: Index: 213; CHECK: Name: __thread_vars (5F 5F 74 68 72 65 61 64 5F 76 61 72 73 00 00 00)14 15; Generated from this C++ source16; template<class T>17; struct Tls {18; static __thread ptr val;19; };20 21; template<class T> __thread ptr Tls<T>::val;22 23; ptr f(int x) {24; return Tls<long>::val;25; }26 27@_ZN3TlsIlE3valE = weak_odr thread_local global ptr null, align 828 29; Function Attrs: nounwind ssp uwtable30define ptr @_Z1fi(i32 %x) #0 {31entry:32 %x.addr = alloca i32, align 433 store i32 %x, ptr %x.addr, align 434 %0 = load ptr, ptr @_ZN3TlsIlE3valE, align 835 ret ptr %036}37 38attributes #0 = { nounwind ssp uwtable "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }39