1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 04:22:57 +02:00
llvm-mirror/test/MC/MachO/tlv-bss.ll
Eric Christopher 0cff1be367 Using the integrated assembler we'd fail to change section to the
.tbss section for zerofill thread locals. Make sure we do this
before emitting the zerofills.

Fixes PR15972.

llvm-svn: 187913
2013-08-07 21:13:06 +00:00

34 lines
1.0 KiB
LLVM

; RUN: llc -O0 -mtriple=x86_64-apple-darwin12 -filetype=obj -o - %s | macho-dump | FileCheck %s
; Test that we emit weak_odr thread_locals correctly into the thread_bss section
; PR15972
; CHECK: __thread_bss
; CHECK: 'size', 8
; CHECK: 'alignment', 3
; CHECK: __thread_vars
; Generated from this C++ source
; template<class T>
; struct Tls {
; static __thread void* val;
; };
; template<class T> __thread void* Tls<T>::val;
; void* f(int x) {
; return Tls<long>::val;
; }
@_ZN3TlsIlE3valE = weak_odr thread_local global i8* null, align 8
; Function Attrs: nounwind ssp uwtable
define i8* @_Z1fi(i32 %x) #0 {
entry:
%x.addr = alloca i32, align 4
store i32 %x, i32* %x.addr, align 4
%0 = load i8** @_ZN3TlsIlE3valE, align 8
ret i8* %0
}
attributes #0 = { nounwind ssp uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }