1 // RUN: %clang_cc1 %s -S -emit-llvm -o - -disable-llvm-optzns | FileCheck %s 2 3 // CHECK: declare !callback ![[cid:[0-9]+]] {{.*}}i32 @pthread_create 4 // CHECK: ![[cid]] = !{![[cidb:[0-9]+]]} 5 // CHECK: ![[cidb]] = !{i64 2, i64 3, i1 false} 6 7 // Taken from test/Analysis/retain-release.m 8 //{ 9 struct _opaque_pthread_t {}; 10 struct _opaque_pthread_attr_t {}; 11 typedef struct _opaque_pthread_t *__darwin_pthread_t; 12 typedef struct _opaque_pthread_attr_t __darwin_pthread_attr_t; 13 typedef __darwin_pthread_t pthread_t; 14 typedef __darwin_pthread_attr_t pthread_attr_t; 15 16 int pthread_create(pthread_t *, const pthread_attr_t *, 17 void *(*)(void *), void *); 18 //} 19 20 const int GlobalVar = 0; 21 22 static void *callee0(void *payload) { 23 return payload; 24 } 25 26 static void *callee1(void *payload) { 27 return payload; 28 } 29 30 void foo() { 31 pthread_t MyFirstThread; 32 pthread_create(&MyFirstThread, 0, callee0, 0); 33 34 pthread_t MySecondThread; 35 pthread_create(&MySecondThread, 0, callee1, (void *)&GlobalVar); 36 } 37