xref: /llvm-project/llvm/test/Verifier/threadlocal.ll (revision c6cd4608c8c4a5356ae41ef05e67df3dc5d9500b)
1; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s
2
3@var = global i32 0
4@tlsvar = thread_local addrspace(1) global i32 0
5
6define void @fail0(ptr %arg) {
7; CHECK: llvm.threadlocal.address first argument must be a GlobalValue
8  %p0 = call ptr @llvm.threadlocal.address(ptr %arg)
9  store i32 42, ptr %p0, align 4
10  ret void
11}
12
13define void @fail1() {
14; CHECK: llvm.threadlocal.address first argument must be a GlobalValue
15  %p0 = call ptr @llvm.threadlocal.address.p0(ptr addrspacecast (ptr addrspace(1) @tlsvar to ptr addrspace(0)))
16  store i32 42, ptr %p0, align 4
17  ret void
18}
19
20
21
22define void @fail2() {
23; CHECK: llvm.threadlocal.address operand isThreadLocal() must be true
24  %p0 = call ptr @llvm.threadlocal.address(ptr @var)
25  store i32 42, ptr %p0, align 4
26  ret void
27}
28
29define void @fail3() {
30; CHECK: llvm.threadlocal.address operand isThreadLocal() must be true
31  %p0 = call ptr @llvm.threadlocal.address(ptr @fail2)
32  store i32 42, ptr %p0, align 4
33  ret void
34}
35