#include "test_utils.h"
int   var = 0;
extern "C" { // TODO: make this line empty when ignore vs. mangling is fixed.
void Thread1() {
  usleep(100000);
  var = 1;
}

void Empty() {
}

void X() {
  if (var) {
    Empty();
  }
  var = 2;
}

void Y() {
  if (var) {
    Empty();
  }
  X();
}

void Thread2() {
  Y();
}
} // TODO: make this line empty when ignore vs. mangling is fixed.
int main() {
  ANNOTATE_TRACE_MEMORY(&var);
  var = 0;
  MyThread t1(Thread1, NULL, "test-thread-1");
  MyThread t2(Thread2, NULL, "test-thread-2");
  t1.Start();
  t2.Start();
  t1.Join();
  t2.Join();
}