1*99451b44SJordan Rupprecht //===-- main.cpp ------------------------------------------------*- C++ -*-===//
2*99451b44SJordan Rupprecht //
3*99451b44SJordan Rupprecht // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*99451b44SJordan Rupprecht // See https://llvm.org/LICENSE.txt for license information.
5*99451b44SJordan Rupprecht // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*99451b44SJordan Rupprecht //
7*99451b44SJordan Rupprecht //===----------------------------------------------------------------------===//
8*99451b44SJordan Rupprecht 
9*99451b44SJordan Rupprecht // This test is intended to verify that thread states are properly maintained
10*99451b44SJordan Rupprecht // when transitional actions are performed in the debugger.  Most of the logic
11*99451b44SJordan Rupprecht // is in the test script.  This program merely provides places where the test
12*99451b44SJordan Rupprecht // can create the intended states.
13*99451b44SJordan Rupprecht 
14*99451b44SJordan Rupprecht #include <chrono>
15*99451b44SJordan Rupprecht #include <thread>
16*99451b44SJordan Rupprecht 
17*99451b44SJordan Rupprecht volatile int g_test = 0;
18*99451b44SJordan Rupprecht 
19*99451b44SJordan Rupprecht int addSomething(int a)
20*99451b44SJordan Rupprecht {
21*99451b44SJordan Rupprecht     return a + g_test;
22*99451b44SJordan Rupprecht }
23*99451b44SJordan Rupprecht 
24*99451b44SJordan Rupprecht int doNothing()
25*99451b44SJordan Rupprecht {
26*99451b44SJordan Rupprecht     int temp = 0;   // Set first breakpoint here
27*99451b44SJordan Rupprecht 
28*99451b44SJordan Rupprecht     while (!g_test && temp < 5)
29*99451b44SJordan Rupprecht     {
30*99451b44SJordan Rupprecht         ++temp;
31*99451b44SJordan Rupprecht         std::this_thread::sleep_for(std::chrono::seconds(2));
32*99451b44SJordan Rupprecht     }
33*99451b44SJordan Rupprecht 
34*99451b44SJordan Rupprecht     return temp;    // Set second breakpoint here
35*99451b44SJordan Rupprecht }
36*99451b44SJordan Rupprecht 
37*99451b44SJordan Rupprecht int main ()
38*99451b44SJordan Rupprecht {
39*99451b44SJordan Rupprecht     int result = doNothing();
40*99451b44SJordan Rupprecht 
41*99451b44SJordan Rupprecht     int i = addSomething(result);
42*99451b44SJordan Rupprecht 
43*99451b44SJordan Rupprecht     return 0;
44*99451b44SJordan Rupprecht }
45