//===-- main.c --------------------------------------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

void shared_check();
// On some OS's (darwin) you must actually access a thread local variable
// before you can read it
int
touch_shared();

// Create some TLS storage within the static executable.
__thread int var_static = 44;

void *fn_static(void *param)
{
	var_static *= 2;
	shared_check();
	usleep(1); // thread breakpoint
	for(;;)
		usleep(1);
}

int main (int argc, char const *argv[])
{
	pthread_t handle;
	pthread_create(&handle, NULL, &fn_static, NULL);
        touch_shared();
        for (; var_static;)
        {
            usleep(1); // main breakpoint
        }

        return 0;
}
