Home | History | Annotate | Download | only in host-tests
      1 // RUN: %clangxx %s -g -fexceptions %extra-clang-opts -o %t
      2 // RUN: %Test_jit_debuginfo %s %t
      3 // DEBUGGER: set breakpoint pending on
      4 // DEBUGGER: break function_test
      5 // DEBUGGER: break %s:47
      6 // DEBUGGER: break %s:55
      7 // DEBUGGER: break %s:60
      8 // DEBUGGER: break %s:66
      9 // DEBUGGER: break %s:69
     10 // DEBUGGER: run
     11 // DEBUGGER: bt 2
     12 // CHECK: #0
     13 // CHECK:  function_test
     14 // CHECK: #1
     15 // CHECK:  main
     16 // DEBUGGER: continue
     17 // DEBUGGER: print j
     18 // CHECK: $1 = 0
     19 // DEBUGGER: step
     20 // DEBUGGER: print j
     21 // CHECK: $2 = 1
     22 // DEBUGGER: continue
     23 // DEBUGGER: print j
     24 // CHECK: $3 = -1
     25 // DEBUGGER: continue
     26 // DEBUGGER: bt 3
     27 // CHECK: #0
     28 // CHECK:  inline_test
     29 // CHECK: #1
     30 // CHECK:  function_test
     31 // CHECK: #2
     32 // CHECK:  main
     33 // DEBUGGER: continue
     34 // DEBUGGER: print j
     35 // CHECK: $4 = 2
     36 // DEBUGGER: continue
     37 // DEBUGGER: print j
     38 // CHECK: $5 = 0
     39 // DEBUGGER: continue
     40 
     41 __attribute__((noinline)) static int function_test();
     42 __attribute__((always_inline)) static int inline_test();
     43 
     44 int inline_test()
     45 {
     46   int i = 0;
     47   i++;
     48   return i;
     49 }
     50 
     51 int function_test(int c)
     52 {
     53   int i, j = 0;
     54   for (i = 0; i < c; i++) {
     55     j++;
     56   }
     57 
     58   {
     59     int j = -1;
     60     j++;
     61   }
     62 
     63   j += inline_test();
     64 
     65   if (j > 0) {
     66     j = 0;
     67   }
     68 
     69   return j;
     70 }
     71 
     72 int main(int argc, char** argv)
     73 {
     74   return function_test(1);
     75 }
     76